首页 > 解决方案 > 从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

标签: excelregexvbavba7vba6

解决方案


您可以仅使用允许的字符构造一个新字符串。

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

推荐阅读