MENU

【初心者向け】Option Compare BinaryとTextの違いとは?VBAでの文字列比較に要注意!

A子さん

「“Apple”と“apple”を同じにしたいだけなのに、どうして動きが違うの!?
しかもモジュールの上に何か書くらしい…?Option Compareって何?」

先輩

文字列を比較するとき、大文字・小文字を区別するのか、しないのか。
それを決めるのが、Option Compareステートメントです。

結論:文字列比較のルールを変える設定です!

Option Compare Binary → 大文字小文字を区別する(デフォルト)

Option Compare Text → 大文字小文字を区別しない

目次

Option Compareとは?

VBAでは、文字列の比較方法をモジュール単位で設定できます。
これを指定するのが、Option Compare というステートメント。

書き方(モジュールの一番上に記述)

Option Compare Binary '← デフォルト
Option Compare Text   '← 明示的に記述が必要

BinaryとTextの違いを比較してみよう

比較内容Option Compare BinaryOption Compare Text
"Apple" vs "apple"違う(区別される)同じ(区別されない)
"Cat" vs "CAT"違う(区別される)同じ(区別されない)
処理速度速い(バイナリ比較)やや遅い(文字列比較)
ソート順ASCIIコード順アルファベット順

実際の動作サンプル

Option Compare Binary の場合(デフォルト)

Option Compare Binary

Sub TestBinary()
    If "Apple" = "apple" Then
        MsgBox "同じです"
    Else
        MsgBox "違います"
    End If
End Sub

表示されるのは「違います」

Option Compare Text の場合

Option Compare Text

Sub TestText()
    If "Apple" = "apple" Then
        MsgBox "同じです"
    Else
        MsgBox "違います"
    End If
End Sub

表示されるのは「同じです」

どちらを使えばいい?

シーン推奨
固定データ・コード処理中心Binary(高速で正確)
ユーザー入力や検索処理Text(人間の感覚に近い)

✅ 例:

  • 名前や商品名など、人の入力がある → Option Compare Text
  • IDやパスワード、厳密比較が必要 → Option Compare Binary

設定の注意点

モジュール単位の設定です。他のモジュールには影響しません

プロジェクト全体に適用したい場合は、すべての標準モジュールに記述が必要

Classモジュールやフォームモジュールにも必要な場合があります

まとめ

Option Compare は文字列の比較ルールを決める命令です

Binary:大文字小文字を区別(デフォルト)

Text:大文字小文字を無視して比較

処理の目的や使いやすさで使い分けましょう

関連記事リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次