教えて!ExcelVBA!

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

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

       f:id:m_kbou:20200420124101p:plain

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

 

【目次】

 

構文

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

=======================================================================

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

=======================================================================

[説明]:

StrComp関数[文字列①][文字列②][比較モード]で比較します。[文字列①]及び[文字列②]は「”」(ダブルクォーテーション)で囲みます。比較した結果、一致している場合には「0」を戻り値とし、不一致の場合には「1」又は「-1」を戻り値とします。[比較モード]にはバイナリモードとテキストモードがあり、バイナリモードを指定する場合は「vbBinaryCompare」と記述し、テキストモードを指定する場合は「vbTextCompare」と記述します。バイナリモードは大文字/小文字・全角/半角・ひらがな/カタカナを区別し、テキストモードはそれらを区別しません内容を纏めると、「[文字列①]と[文字列②]で指定した文字列を[比較モード]で指定した比較モードで比較して下さい。また、結果を戻り値で返して下さい。」との意味になります。

[記述例]:

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

 

使い方

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

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

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

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub サンプル()

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

-------------------------------------------------

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

[実行例]:

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

f:id:m_kbou:20200228084657p:plain

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

 

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

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

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub サンプル()

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

-------------------------------------------------

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

[実行例]:

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

f:id:m_kbou:20200228084644p:plain

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

 

おわりに

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