2017-01-16 4 views
0

VBAでは、右から句読記号の最初のインスタンスを見つけるにはどうすればよいですか? 「!」:InStrRevのような右側からVBA文字列内の句読点を検索する

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

何かが理想的であるが、それは正規表現式をサポートdoesntのように思えるから、例えば、私は次の文字列に用語「セキュリティ」を2回取得することができるはずです。どんな助けでも大歓迎です!

答えて

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 
関連する問題