• ベストアンサー

エクセルVBAで部分検索でのアラートを出すには

エクセルVBAで部分検索でのアラートを出すには 変数でセルの値を受け取った物を部分比較して検索する方法を教えてください。 やりたいことは 変数Aに「田中浩二」が読み込まれているときに変数Bに「山中浩三郎」や「田中敦」など隣り合った2文字で同じ場合アラートを出して入力ユーザーに判断を仰ぎ行き先を分岐するということを考えています。 いろいろ調べたのですが上記のような例題が見つからなかったので質問しました。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mindatg
  • ベストアンサー率48% (110/227)
回答No.1

Dim strA As String Dim strB As String strA = "田中浩二" strB = "山中浩三郎" 'strB = "田中敦" Dim strArry() Dim iCnt As Integer Dim i As Integer Dim j As Integer Dim i1st As Integer Dim i2nd As Integer ' 変数Aの文字数を数える iCnt = Len(strA) ' 変数Aの文字数に応じた配列 ReDim strArry(iCnt) ' 1文字づつ配列に分解して格納する For i = 1 To iCnt strArry(i) = Mid(strA, i, 1) Next i ' 変数Bを調査 For j = 1 To iCnt ' 変数Bに分解した変数Aの文字が存在するか? i1st = InStr(strB, strArry(j)) If i1st > 0 Then ' 変数Aがの調査文字が最後の場合 AND ' 変数Bで見つかった位置が最後の文字ならこれ以上調査しない If j = iCnt and i1st = Len(strB) Then Exit Sub i2nd = InStr(strB, strArry(j + 1)) If i2nd = i1st + 1 Then MsgBox ("2文字連続している") End If End If Next j

homma
質問者

お礼

回答ありがとうございました。 配列を使っての調査方法大変よくわかりました。 使わせていただきます。 ありがとうございました。

その他の回答 (1)

noname#149523
noname#149523
回答No.2

力技だけど。 Sub testAB() Dim A As String, B As String Dim i As Long, n As Long A = "田中浩二郎" B = "山中浩三郎" n = 2 '2文字連続で分岐 For i = 1 To Len(A) - n + 1  If 0 < InStr(1, B, Mid(A, i, n)) Then   '分岐処理   MsgBox A & vbCrLf & B & vbCrLf & Mid(A, i, n)  End If Next End Sub

homma
質問者

お礼

お礼メールが遅れましたことをお詫びします。 参考になりました、ありがとうございました。

関連するQ&A