excel - 从VBA中的范围中删除特殊字符
问题描述
我创建了一个 VBA 代码来删除列中可用的所有特殊字符。例如,我在列的每个单元格中有一个带有一些特殊字符的字母数字字符:假设在一个单元格中我有一个值:abc@123!-245 执行我的代码后,我得到了输出 abc 123 245 这里我的代码工作正常删除所有特殊字符。我的代码如下:
Sub ReplaceSpecial()
Dim cel As Range
Dim strVal As String
Dim i As Long
Application.ScreenUpdating = False
For Each cel In Selection
strVal = cel.Value
For i = 1 To Len(strVal)
Select Case Asc(Mid(strVal, i, 1))
Case 32, 48 To 57, 65 To 90, 97 To 122
' Leave ordinary characters alone
Case Else
Mid(strVal, i, 1) = " "
End Select
Next i
cel.Value = strVal
Next cel
Application.ScreenUpdating = True
End Sub
现在,如果我想删除我的输出空间,使输出看起来像 abc123245,如何在 VBA 中做到这一点?输入:abc@123!-245 电流输出:abc 123 245 所需输出:abc123245
解决方案
您可以仅使用允许的字符构造一个新字符串。
Sub ReplaceSpecial()
Dim cel As Range
Dim strVal As String, temp As String
Dim i As Long
Application.ScreenUpdating = False
For Each cel In Selection
strVal = cel.Value
temp = vbNullString
For i = 1 To Len(strVal)
Select Case Asc(Mid(strVal, i, 1))
Case 32, 48 To 57, 65 To 90, 97 To 122
temp = temp & Mid(strVal, i, 1)
End Select
Next i
cel.Value = temp
Next cel
Application.ScreenUpdating = True
End Sub
推荐阅读
- android - 如何解析和显示响应 Okhttp 的代码?
- dart - Flutter - 有没有办法只使用 IconButton(不创建应用栏)来打开抽屉?
- unity3d - 使用 Unity Physics 将球持续反弹到相同的高度
- python - 如何将用户定义的行函数应用于加载的数组的所有行?
- amazon-web-services - 使用 CNAME 的外部站点,用于托管在 AWS 上的站点
- android - 当我使用 LinearLayout 而不是 CardView 作为父 XML 布局时,RecyclerView 仅显示 1 个项目
- xml - .gitignore 中的 .idea/compiler.xml?
- asp.net - 如何访问 Page.FormViewDetails.DataKey?
- javascript - 当在另一个项目中使用此私有 styleguidist 包时,如何正确构建包以便建议/自动完成在 intellij 中工作
- vue.js - 问题 - TypeError: XXX is not a function