VBAで大文字と小文字を区別しないようにする – Option Compare Text
VBAで作業していると、文字列を比較することがよくあります。デフォルトでは、VBAは大文字と小文字を区別するので、2つの同じテキストを比較する場合、一方が大文字で他方が小文字の場合、VBAはそれらを異なるテキストと見なします。このチュートリアルでは、VBAが大文字と小文字を区別しないようにする方法について説明します。
VBAの大文字と小文字を区別しないようにする
VBAで大文字と小文字を区別しないようにするには、モジュールの先頭に Option Compare Textをモジュールの先頭に追加します。まず、このオプションを設定しない場合のVBAの標準的な動作を見てみましょう。
If Sheet1.Range("A1").Value = Sheet1.Range("B1").Value Then
MsgBox "2つのテキストは同じです"
Else
MsgBox "2つのテキストは異なります"
End If
この例では、A1 と B1 の文字列を比較します。もし、文字列が等しければ、「2つのテキストは同じです」というメッセージボックスを返します。等しくない場合は、”Two texts are different “というメッセージを返します。
画像1. Option Compare Textを使用せずに文字列を比較
図にあるように、両方のテキストは同じものですが、最初のテキストは大文字と小文字が混在し、2番目のテキストは大文字のみになっています。そのため、VBAは両者を異なるものと見なし、このようなメッセージを返しました。
Option Compare Text
Public Sub CaseSensitiveTest()
If Sheet1.Range("A1").Value = Sheet1.Range("B1").Value Then
MsgBox "2つのテキストは同じです"
Else
MsgBox "2つのテキストは異なります"
End If
End Sub
では、Option Compare Text をモジュールの先頭に追加して、その違いを見てみましょう。以下はそのコードです。同じ例でコードを実行します。
画像2. Option Compare Textを使用して文字列を比較
Option Compare Textを設定すると、VBAは大文字小文字を区別せず、この2つのテキストを同じものと見なします。
テキストを比較する
Option Compare Textを宣言しない場合、大文字小文字を区別しない比較を行うために、文字列の大文字小文字を変換することができます。これは、UCase、LCase、またはStrConv関数で可能です。これについては、こちらで詳しく解説しています:VBA 大文字、小文字、プロパー大文字 – 大文字小文字変換関数