教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】StrComp関数で2つの文字列を比較する方法を教えて!

f:id:m_kbou:20200420124101p:plain

文字列を比較するにはStrComp関数を使用します。StrComp関数は比較モードとしてバイナリモードとテキストモードがあります。

 

 

構文

記述方法は以下の通りとなります。

StrComp(”[文字列①]”,”[文字列②]”,[比較モード])

[説明]:

2つの文字列を指定した方法で比較し結果を返します。

[文字列①] 比較する1つ目の任意の文字列を記述します。
※「”」(ダブルクォーテーション)で囲みます。
[文字列②] 比較する2つ目の任意の文字列を記述します。
※「”」(ダブルクォーテーション)で囲みます。
[比較モード] 比較するモードを記述します。
比較モードには以下2つがあります。
・バイナリモード(vbBinaryCompare)
 大文字/小文字・全角/半角・ひらがな/カタカナを区別して比較
・テキストモード(vbTextCompare)
 大文字/小文字・全角/半角・ひらがな/カタカナを区別せずに比較

StrComp関数は比較した結果を戻り値として返します。
戻り値の内容は以下の通りとなります。

戻り値 内容
0 比較した結果が一致した場合
1 又は -1 比較した結果が不一致の場合

[記述例]:

StrComp("ExcelVBA", "excelvba", vbTextCompare)
StrComp("ExcelVBA", "excelvba", vbBinaryCompare)

 

使い方

使い方について具体的に説明します。

バイナリモードで比較する方法

バイナリモードで比較する方法について説明します。 

[プログラミング例]:

Sub サンプル()

  MsgBox StrComp("ExcelVBA", "excelvba", vbBinaryCompare)    

End Sub

「文字列”ExcelVBA”と文字列”excelvba”をテキストモードで比較し、結果の戻り値をMsgBoxで表示し下さい。」との意味になります。

f:id:m_kbou:20210304174035p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210304174055p:plain

②処理結果は以下の様になります。バイナリモードでは大文字/小文字・全角/半角・ひらがな/カタカナの比較まで行うため、戻り値は「-1」となります。 

f:id:m_kbou:20210304174111p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

バイナリモードで2つの文字列を比較する方法についての説明は以上です。

 

テキストモードで比較する方法

テキストモードで比較する方法について説明します。 

[プログラミング例]:

Sub サンプル()

  MsgBox StrComp("ExcelVBA", "excelvba", vbTextCompare)    

End Sub

「文字列”ExcelVBA”と文字列”excelvba”をテキストモードで比較し、結果の戻り値をMsgBoxで表示し下さい。」との意味になります。

f:id:m_kbou:20210304174131p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210304174146p:plain

②処理結果は以下の様になります。 テキストモードでは大文字/小文字・全角/半角・ひらがな/カタカナの比較は行わないため、戻り値は「0」となります。

f:id:m_kbou:20210304174201p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

テキストモードで2つの文字列を比較する方法についての説明は以上です。

 

プログラミング(サンプル)

プログラミング事例を紹介します。

www.osiete-excelvba.work

 

おわりに

今回はStrComp関数を使用した2つの文字列を比較する方法について説明しました。上記の説明でも分かる通り、より厳密に比較したい場合にはバイナリモードでの比較が必要になります。状況により比較方法を使い分けて下さい。