2

我在 VBA 中编写了以下用户定义函数,它允许我从任何给定的单元格中删除某些非文本字符。

代码如下:

Function removeSpecial(sInput As String) As String
    Dim sSpecialChars As String
    Dim i As Long
    sSpecialChars = "\/:*?™""®<>|.&@#(_+`©~);-+=^$!,'" 'This is your list of characters to be removed
    For i = 1 To Len(sSpecialChars)
        sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), " ")
    Next
    removeSpecial = sInput
End Function

这部分代码显然定义了要删除的字符:

sSpecialChars = "\/:*?™""®<>|.&@#(_+`©~);-+=^$!,'"

我还想在这个标准中包含一个普通的空格字符“”。我想知道是否有某种转义字符可以用来执行此操作?

所以,我的目标是能够运行这个函数,让它从给定的 Excel 单元格中删除所有指定的字符,同时删除所有空格。

另外,我意识到我可以在 Excel 本身中使用 =SUBSTITUTE 函数来做到这一点,但我想知道在 VBA 中是否可行。

编辑:它是固定的!谢谢西莫科!

Function removeSpecial(sInput As String) As String
    Dim sSpecialChars As String
    Dim i As Long
    sSpecialChars = "\/:*?™""®<>|.&@# (_+`©~);-+=^$!,'" 'This is your list of characters to be removed
    For i = 1 To Len(sSpecialChars)
        sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "") 'this will remove spaces
    Next
    removeSpecial = sInput
End Function
4

1 回答 1

1

因此,根据 simoco 的建议,我能够修改我的for loop

For i = 1 To Len(sSpecialChars)
        sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "") 'this will remove spaces
    Next

现在,对于我的电子表格中给定单元格中的每个字符,特殊字符都将被删除并替换为任何内容。这基本上是通过一起使用的 Replace$ 和 Mid$ 函数完成的,如下所示:

sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "") 'this will remove spaces

此代码通过 my 对单元格中从位置 1 处的字符开始的每个字符执行for loop

如果偶然发现我最初的问题,希望这个答案对将来的人有所帮助。

于 2014-03-14T23:59:37.607 回答