在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