1番最後に見つかった位置を返す |
一番最後に見つかった位置を返すInstrRev似関数 ゆう(U)さん投稿分 (007) | |
|
Option Explicit '======================================================= '一番最後に見つかった位置を返すInstrRev似関数 fInstrRev1 '======================================================= 'result=fInstrRev1(String1,String2,[lngLimit],[Compare]) '引数 String1 :検索対象となる文字列(""不可) ' String2 :検索する文字列(""不可) ' lngLimit:検索対象とする文字数(省略:全文字) ' Compare :比較モード(省略可) ' 戻値 result :>0 位置 / 0 なし / -1 エラー '------------------------------------------------------- 'VB6.0のInstrRev関数と違ってNullなどは考慮していません '------------------------------------------------------- Private Function fInstrRev1(ByRef String1 As String, _ ByRef String2 As String, _ Optional ByVal lngLimit As _ Long = -1&, _ Optional ByVal compare As _ VbCompareMethod = vbBinaryCompare _ ) As Long Dim i As Long, j As Long Dim lngEndPos As Long Dim lngLength As Long lngLength = Len(String2) If lngLength = 0& Then GoTo Err_Exit If Len(String1) = 0& Then GoTo Err_Exit If lngLimit < 0& Then lngEndPos = Len(String1) - lngLength + 1& Else lngEndPos = lngLimit - lngLength + 1& End If i = InStr(j + 1&, String1, String2, compare) Do While i > 0& If i > lngEndPos Then Exit Do j = i i = InStr(j + 1&, String1, String2, compare) Loop fInstrRev1 = j Exit Function Err_Exit: fInstrRev1 = -1& End Function '============================================================ 使用方法 Private Sub Command1_Click() Dim lngRet As Long lngRet = fInstrRev1(Text1.Text, Text2.Text) Text3.Text = lngRet If lngRet > 0 Then Text1.SetFocus Text1.SelStart = lngRet - 1 Text1.SelLength = Len(Text2.Text) End If End Sub |
2002/04/17