• ベストアンサー

文字列の比較について

お世話になります。 次のような文字列の比較を考えているのですが 123456789 123456ABC89 この場合、ABCを7に置き換えると文字列が一致する ので、「7」と「ABC」を取り出したいのですが、 どのように調べたらよいでしょうか? VBはいろいろと関数も用意されているので、現在は instrとinstrrevを使って相違のある場所を調べようと していますがなかなか思うようにいきません。 お願いします。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

例えば MyString1とMyString2に文字列をセットして左から順に比較しLoopさせ一致しない位置を出し同様に右から順に比較し一致しない位置を取得し一致しない部分をLenで求めた文字列の長さから割り出しMidで切り出す。 Dim MyString1 As String Dim MyString2 As String Dim MySubString1 As String Dim MySubString2 As String Dim MySubString3 As String Dim MySubString4 As String Dim MyLen1 As long Dim MyLen2 As long Dim i As long Dim j As long MyString1 = "123456789"  '取りあえず値をセットしました MyString2 = "123456ABC89" 'ここでレコードセットからフィールドを持ってくれば i = 1 Do MyLen1 = Len(MyString1) MyLen2 = Len(MyString2) MySubString1 = Left(myString1, i) MySubString2 = Left(myString2, i) i = i + 1 Loop MySubString1 <> MySubString2 j = 1 Do MySubString3 = Left(myString1, j) MySubString4= Left(myString2, j) j = j + 1 Loop MySubString3 <> MySubString4 mid(mid(MyString1,1,i-1),1,(MyLen1-(i-1)-(j-1))) '7が返る mid(mid(MyString2,1,i-1),1,(MyLen2-(i-1)-(j-1))) 'ABCが返る と思うのですが・・ 試したり何もしていないですがこんな感じでどうでしょうか。

investyou
質問者

お礼

ご親切にありがとうございます。 考え方は分かっていましたが、いざロジックに直そうとするとうまくかけなかったです。 おかげさまで回答者様のコードを元に作成できました。 またよろしくおねがいします。

関連するQ&A