教えて!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つの文字列を比較する方法について説明しました。上記の説明でも分かる通り、より厳密に比較したい場合にはバイナリモードでの比較が必要になります。状況により比較方法を使い分けて下さい。