繁体   English   中英

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

[英]escaping special characters in vba is not working

我不知道为什么,但是我无法在模式中转义特殊字符。

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

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

在方括号之间,我希望任何字符串都可以。

使用VBA Like运算符时,应该通过将特殊字符括在方括号( [] )中来对其进行转义。 上面您使用的是正则表达式的语法,这与Like模式不同。 请参阅MSDN上的此页面,以获取有关Like和正则表达式之间区别的更多信息。

使用RegEx.Replace方法尝试以下解决方案。

注意 :特别感谢您提供此答案中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

另一个解决方案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM