電子書籍の厳選無料作品が豊富!

エクセルVBAで部分検索でのアラートを出すには
変数でセルの値を受け取った物を部分比較して検索する方法を教えてください。

やりたいことは
変数Aに「田中浩二」が読み込まれているときに変数Bに「山中浩三郎」や「田中敦」など隣り合った2文字で同じ場合アラートを出して入力ユーザーに判断を仰ぎ行き先を分岐するということを考えています。

いろいろ調べたのですが上記のような例題が見つからなかったので質問しました。

よろしくお願いします。

A 回答 (2件)

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/21 11:15

力技だけど。



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
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/21 11:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!