[VBA] Text モードで文字列を比較します (StrComp関数)

 今回は 大文字と小文字を同じものとして判定する比較方法 について解説します。
 さっそくですけど、次のマクロを実行してみてくださいな。

 Bynary モードで文字列を比較します

 Sub CompareWord()

 Dim tf As Boolean
 Dim mystr1 As String
 Dim mystr2 As String

 mystr1 = "KOBATO"
 mystr2 = "kobato"

 'mystr1=mystr2 の真偽を変数に入れます
 tf = mystr1 = mystr2

 Debug.Print tf

 End Sub

 「KOBATO」と「kobato」を比較させて、その真偽を返すように書かれたマクロなのですけど、結果は False(偽)と表示されます。つまり、VBA の既定では「大文字と小文字」を異なるデータとして判定するのです。同じように既定では「全角と半角」、「ひらがなとカタカナ」も異なる文字列として判定されます。このような比較方法を Bynary モード とよびます。でもマクロによっては、これらを同じものとして扱ったほうが便利なこともあります。「大文字と小文字」「全角と半角」「ひらがなとカタカナ」を同じものとして判定する比較方法を Text モード といいます。
 

Text モードで文字列を比較します

 StrComp 関数 は2つの文字列を比較して結果を数値または Null 値で返します。

=StrComp(文字列1, 文字列2 [,比較モード])

 3つめの引数 [比較モード] を 1 または vbTextCompare で指定すると、Text モードの比較になります。2つの文字列が等しいときは 0, 異なるときは 1 が返ります。ちなみに StrComp は StringCompare の略です。先ほどのマクロをちょっとだけ書き変えてみます。

 Text モードで文字列を比較します

 Sub TextMode1()

 Dim tf As Variant
 Dim mystr1 As String
 Dim mystr2 As String

 mystr1 = "KOBATO"
 mystr2 = "kobato"

 'mystr1 と mystr2 の比較結果を tf に入れます
 tf = StrComp(mystr1, mystr2, vbTextCompare)

 Debug.Print tf

 End Sub

 このマクロを実行すると 0 が戻ります。つまり「KOBATO」と「kobato」は同じ文字列であると判定されたわけです。最後にユーザーさんが好きな単語を入力して、それが同じであるかどうかを判定するマクロを作ってみます。

 Text モードで文字列を比較します

 Sub TextMode2()

 Dim tf As Variant
 Dim mystr1 As String
 Dim mystr2 As String

 mystr1 = InputBox("1つめの単語を入れてね")
 mystr2 = InputBox("2つめの単語を入れてね")

 'mystr1 と mystr2 の比較結果を tf に入れます
 tf = StrComp(mystr1, mystr2, vbTextCompare)

 If tf = 0 Then

 MsgBox "同じ単語だよ"

 Else

 MsgBox "違う単語だよ"

 End If

 End Sub

 マクロを実行すると単語の入力が促されるので、たとえば全角、半角で「コバト」「コバト」と入れると「同じ単語だよ」というメッセージが返ります。「コバト」「コトバ」と入れると「違う単語だよ」というメッセージが返ります ...... 当たり前だけですけどね。たまに間違える人がいるんですよね。「言葉の妖精ことばさん」てね。そのたびに「こ・ば・とです!」とはっきり訂正するんだけど、同じ人から届いた挨拶状にやっぱり「ことばさん」て書いてあるのを見たときは「きききい!」てなりましたよ。え? そもそも「ことばの妖精こばと」なんて紛らわしい名前を名乗ってるほうが悪い? ほっといてくださいな!

 ≫ VBA 辞典メニューに戻って他の記事も読んでくれると嬉しいな~♪

Google広告
スポンサーリンク
スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください