2017-01-16 231 views
0

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

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

喜欢的东西InStrRev将是理想的,但好像它不支持正则表达式。任何帮助是极大的赞赏!

回答

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