宣言 Option_CompareステートメントBinaryモード・Textモード

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Binary モードテスト/Option Compare Binary

Option Explicit


'文字列比較方法を Binary モードに設定します。
'Option Compare Binary
'↑規定値で明示無しでもBinaryモード

Private Sub testCompareBinary()
Dim A As String, b As String
Dim bln As Boolean, i As Byte

i = i + 1
A = "*": b = "*" '全角半角
    If A = b Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "A": b = "A" '全角半角
    If A = b Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "A": b = "a" '大文字小文字
    If A = b Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "あ": b = "ア" 'ひらがなカタカナ
    If A = b Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln
'--------------------------------------------------------
i = i + 1
A = "*": b = "*" '全角半角
    If InStr(1, A, b) <> 0 Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "*": b = "*" '全角半角/比較モードを指定
    If InStr(1, A, b, vbTextCompare) <> 0 Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "あ": b = "ア" 'ひらがなカタカナ
    If InStr(1, A, b) <> 0 Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "あ": b = "ア" 'ひらがなカタカナ/比較モードを指定
    If InStr(1, A, b, vbTextCompare) <> 0 Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

'1 [* : *]     False
'2 [A : A]     False
'3 [A : a]      False
'4 [あ : ア]    False
'5 [* : *]     False
'6 [* : *]     True
'7 [あ : ア]    False
'8 [あ : ア]    True

End Sub

Text モードテスト/Option Compare Text

Option Explicit

' 文字列比較方法を Text モードに設定します。
Option Compare Text


Private Sub testCompareText()
Dim A As String, b As String
Dim bln As Boolean, i As Byte

i = i + 1
A = "*": b = "*" '全角半角
    If A = b Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "A": b = "A" '全角半角
    If A = b Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "A": b = "a" '大文字小文字
    If A = b Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "あ": b = "ア" 'ひらがなカタカナ
    If A = b Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln
'--------------------------------------------------------
i = i + 1
A = "*": b = "*" '全角半角
    If InStr(1, A, b) <> 0 Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "*": b = "*" '全角半角/比較モードを指定
    If InStr(1, A, b, vbBinaryCompare) <> 0 Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "あ": b = "ア" 'ひらがなカタカナ
    If InStr(1, A, b) <> 0 Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

i = i + 1
A = "あ": b = "ア" 'ひらがなカタカナ/比較モードを指定
    If InStr(1, A, b, vbBinaryCompare) <> 0 Then
        bln = True
    Else
        bln = False
    End If
Debug.Print i & "[" & A & " : " & b & "]" & bln

'1 [* : *]     True
'2 [A : A]     True
'3 [A : a]      True
'4 [あ : ア]    True
'5 [* : *]     True
'6 [* : *]     False
'7 [あ : ア]    True
'8 [あ : ア]    False

End Sub

Option Compare ステートメント

文字列データの既定の比較方法を設定します。モジュール レベルで使います。

  • 構文

  • Option Compare {Binary | Text | Database}
  • 解説

  • Option Compare ステートメントを使う場合は、モジュール内のどのプロシージャよりも前に記述する必要があります。
  • Option Compare ステートメントは、モジュール内での文字列の比較方法 (Binary モード、Text モード、または Database モード) を指定するものです。
  • Option Compare ステートメントが記述されていないモジュールでは、既定の文字列比較方法である Binary モードが使われます。
  • Binary モードでは、文字列比較の並べ替え順序は、バイナリ文字コードのコード順によって行われます。
  • Microsoft WIndows 版 Visual Basicでは 、文字コードは Unicode で表現されるので、結果は Unicode のコード順によって決まります。
  • Binary モードでの並べ替えの例を次に示します。(ただし、バージョン4.0 以前の Windows 16bit 版 Visual Basic、または Macintosh 版 Visual Basic では、文字コードはシフト JISで表現されていたため、結果が異なる場合があります。)
  • "*" < "a" < "z" < "あ" < "ん" < "ア" < "ン" < "亜" < "*" < "A" < "ア" < "ン"
  • Text モードでは、文字列比較は、オペレーティング システムの国別情報の設定で決まります。
  • 日本語/日本の場合は、50 音順で、大文字と小文字、文字幅、カタカナとひらがなを区別しない並べ替え順になります。
  • Text モードでの並べ替えの例を次に示します。
  • (*=*) < (0=0) < (9=9) < (A=a=A=a) < (B=b=B=b) < (ア=ア=あ) < (ン=ン=ん) < 亜
  • Database モードは、Microsoft Access でのみ使用できます。このモードの文字列比較の並べ替え順序は、データベースの文字列比較に適用される国別の ID によって決まります。

Option Compare ステートメントの使用例

次の例では、Option Compare ステートメントを使って、既定の文字列比較方法を変更します。Option Compare ステートメントは、モジュール レベルでのみ使用します。
' 文字列比較方法を Binary モードに設定します。
Option Compare Binary     ' "AAA" は、"aaa" よりも小さくなります。
' 文字列比較方法を Text モードに設定します。
Option Compare Text        ' "AAA" と "aaa" は、等価です。

 

2000年01月01日|[VBサンプルコード]:[宣言]