在vba中转义特殊字符不起作用

我不知道为什么,但是我不能逃避模式中的特殊字符。

If StrTest Like "\[*\]" Then ... 

它仍然不符合[1234567890]之类的值。 在其他线程中,我读到“\”用于转义字符,但它仍然无法正常工作。

在括号之间我想要任何string是可能的。

当使用VBA Like操作符时,你应该通过将它们放在方括号( [] )中来转义特殊字符。 上面使用的是正则expression式的语法, Like模式不同。 有关Like和正则expression式之间的区别的更多信息,请参阅MSDN上的此页面 。

使用RegEx.Replace方法尝试下面的解决scheme。

注意 :特别感谢您对本答案中的Pattern帮助

 Option Explicit Sub ClearData() Dim StrTest As String Dim Result As String Dim Reg1 As Object StrTest = "[1234567890]" Set Reg1 = CreateObject("VBScript.RegExp") With Reg1 .Global = True .IgnoreCase = True .Pattern = "[-[\]{}()*+?.,\\/^$|#\s]" ' escape special characters pattern End With If Reg1.test(StrTest) Then Result = Reg1.Replace(StrTest, Result) End If End SUb 

另一个scheme

 Sub no_spch() For Each cell In range("a1:a10") spch = "#+-,'.()[]!?`&:*" For i = 1 To Len(spch) cell.Value = Replace(Replace(cell.Value, Mid(spch, i, 1), ""), " ", "") Next Next End Sub