从右侧查找VBA字符串中的标点符号

时间:2017-01-16 08:13:21

标签: excel-vba vba excel

在VBA中,如何从右侧找到标点符号的第一个实例?例如,从“!”开始,我应该能够在以下字符串中获得两次“安全性”一词:

INDEX(Security![a range], MATCH(J2,Security![a range],0))

像InStrRev这样的东西是理想的,但似乎它不支持正则表达式。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

InStrRev()确实不接受RegEx模式,但VBA确实支持RegEx,并且有一种方法可以实现您的需求。但是,只需循环遍历每个字符并查找任何标点符号都非常简单,可能是您喜欢的路线。

下面的骨架代码(只有几个标点符号):

Public Sub RunMe()
    Const punc As String = "!""*()-[]{};':@~,./<>?"

    Debug.Print InStrRevAny("T:E'S!T", punc)
End Sub
Private Function InStrRevAny(refText As String, chars As String) As Long
    Dim i As Long, j As Long

    For i = Len(refText) To 1 Step -1
        For j = 1 To Len(chars)
            If Mid(refText, i, 1) = Mid(chars, j, 1) Then
                InStrRevAny = i
                Exit Function
            End If
        Next
    Next
End Function