逆Instr関数

<戻る

ここに載せてあるソースコードは、参考のために載せてあります

サンプルコードは、一番下にLZHとしてあります




Option Explicit

Private Sub cmdSearch_Click()
    Dim lngPickUp As Long
    
    If optInstr.Value = True Then
        '順方向処理です
        'どちらかの内容がヌルの場合 0にします
        If Text1.Text = "" Or Text2.Text = "" Then
            lngPickUp = 0
        Else
            lngPickUp = InStr(Text1.Text, Text2.Text)
        End If
        
    ElseIf optBackInstr.Value = True Then
        '逆方向処理です
        lngPickUp = BackInstr(Text1.Text, Text2.Text)
        
    End If
    
    If lngPickUp = 0 Then
        txtState.Text = "文字列は、見つかりませんでした"
    Else
        Text1.SetFocus
        txtState.Text = "文字列は、" & lngPickUp & "番目に見つかりました"
        Text1.SelStart = lngPickUp - 1
        Text1.SelLength = Len(Text2.Text)
    End If
    
End Sub

'逆方向Instr関数です
Public Function BackInstr(ByVal str1 As String, ByVal str2 As String) As Long
    Dim lngSeek As Long, lngStr2Len As Long
    
    '一番後ろの位置を得るために
    '文字列の長さで取得します
    lngSeek = Len(str1)
    
    lngStr2Len = Len(str2)
        
    '後ろから検索していって対象文字列(str2)が
    '見つかったら、その位置を返して関数から出ます
    Do
        If Mid(str1, lngSeek, lngStr2Len) = str2 Then
            BackInstr = lngSeek
            Exit Function
        End If
        lngSeek = lngSeek - 1
    Loop Until lngSeek <= 0
    
    '見つからなかったら0を返します
    BackInstr = 0
End Function





<戻る

Sample53.lzh


http://www.vector.co.jp/authors/VA015521/