VBAで大文字と小文字を区別しないようにする – Option Compare Text

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 6月 1, 2022

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 大文字、小文字、プロパー大文字 – 大文字小文字変換関数

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples