2017-01-16 54 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