こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、VBAで文字列比較する方法を知っていますか?入力した文字のチェックをする場合や、指定した文字が入力されているセルを確認する場合など、文字列比較をするケースはよくあります。そこで今回は、
- IF文を使ってシンプルに文字列比較する方法
- StrComp関数を使った文字列比較方法
- ワイルドカード(*)を使って文字列比較する方法
といった基礎的なことから、応用的な方法まで、徹底的に解説します!
完全一致で文字列比較する方法とは
完全一致で文字列比較する方法は、2パターンあります。
IF文を使う方法
まずは、IF文を使う方法です。以下のように書くことで、完全一致で文字列比較することができます。
使い方:
If 文字列1 = 文字列2 Then '同じ文字列だったときの処理 Else '違う文字列だったときの処理 End If
具体的な使い方について説明するために、サンプルコードも用意しました。
サンプルコード:
Sub Test1() Dim strSample1 As String Dim strSample2 As String strSample1 = "侍" strSample2 = "侍" If strSample1 = strSample2 Then MsgBox "【strSample1】と【strSample2】は「同じ文字列」です", vbInformation Else MsgBox "【strSample1】と【strSample2】は「違う文字列」です", vbCritical End If End Sub
strSample1とstrSample2の文字列が同じだった場合、違う場合でそれぞれ別のメッセージを出すサンプルです。
このように、IF文を使えば簡単に文字列を比較することができます。
StrComp関数を使う方法
次に、StrComp関数を使う方法について解説します。以下のように書くことで、完全一致で文字列比較することができます。
使い方:
StrComp(文字列1,文字列2)
一致した場合、しなかった場合、どちらかが空白の場合の3パターンの実行結果が数値で返ってきます。
- 一致 :0
- 一致しない:-1
- 空白あり:1
具体的な使い方について説明するために、サンプルコードも用意しました。
サンプルコード:
Sub Test2() Dim strSample1 As String Dim strSample2 As String Dim resultNo As Integer strSample1 = "侍" strSample2 = "侍" '文字列比較実施 resultNo = StrComp(strSample1, strSample2) '結果に応じてメッセージをわける If resultNo = 0 Then MsgBox "【strSample1】と【strSample2】は「同じ文字列」です", vbInformation ElseIf resultNo = -1 Then MsgBox "【strSample1】と【strSample2】は「違う文字列」です", vbCritical Else MsgBox "【strSample1】と【strSample2】のどちらかが空白です", vbCritical End If End Sub
If文の場合は一致か不一致かのみの確認でしたが、StrComp関数の場合は、空白も判定できるので、厳しくチェックしたい場合に便利ですね。If文の方が読みやすい時もあるので、用途に応じて使い分ければOKです。
補足:部分一致で文字列を比較するためのワイルドカードの使い方とは
今回は、文字列が完全一致しているか判定する方法を紹介しましたが、分一致で確認したいときもありますよね。部分一致で確認したい場合は、ワイルドカード(*)を使うのがおすすめです!
以下で詳細解説しているので、気になる方は見てみてくださいね!
補足:その他の文字列操作方法について
VBAでは文字列を扱うことが多いので、ある程度まとめて覚えておくのがおすすめです。以下記事で詳しく解説しているので、こちらも合わせてみてみてくださいね!
まとめ
今回は、VBAで文字列を完全一致・部分一致で比較する方法について解説しました。文字列比較は入力チェックでよく使います。IF文、StrComp関数、ワイルドカード(*)どれも簡単に使うことができるので、ぜひ使ってみてくださいね!