
「“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 Binary | Option 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
:大文字小文字を無視して比較
処理の目的や使いやすさで使い分けましょう
コメント