HOME > 即効テクニック > AccessVBA > 日付・文字列操作・演算 > 文字列が半角、全角、混在かを判断する

即効テクニック

日付・文字列操作・演算

文字列が半角、全角、混在かを判断する

(Access 95/97)
●詳細●
Access95以降、AccessはUnicode対応のアプリケーションとなりましたので、Len関数/LenB関数のみで文字列が半角、全角、混在かを判断することは不可能です。
そこで、ある文字列がすべて半角か、すべて全角か、あるいは混在かを判断するのにStrConv関数とLen関数/LenB関数を使った方法をご紹介します。
まず、インプットボックスを表示して、判断する文字列を入力します。
入力された文字列は、StrConv関数でANSI文字列に変換してから文字数とバイト数を求めて判断します。

●サンプル●
Sub Sample()
    Dim strANSI    As String
    Dim myLen      As Integer
    Dim myLenB     As Integer
    Dim strUnicode As String

    strUnicode = InputBox(Prompt:="判断する文字列を入力してください", _
                          Title:="文字列の種類判断")
    
    If strUnicode = "" Then
        Exit Sub
    End If

    strANSI = StrConv(strUnicode, vbFromUnicode)
    
    myLen = Len(strUnicode)
    myLenB = LenB(strANSI)
    
    If myLen * 2 = myLenB Then
        MsgBox "全角文字だけです"
    ElseIf myLen = myLenB Then
        MsgBox "半角文字だけです"
    Else
        MsgBox "全角と半角が混じっています"
    End If

End Sub

●補足説明●
Len関数は、文字列内の文字数の取得をします。LenB関数は、文字列のバイト数の取得をします。
StrConv関数は、文字列を指定された種類に変換します。指定できる定数と値は次のとおりです。

定数      値    内容 
vbUpperCase  1    文字列を大文字に変換します。 
vbLowerCase   2   文字列を小文字に変換します。 
vbProperCase   3   文字列の各単語の先頭の文字を大文字に変換します。 
vbWide      4   文字列内の半角文字(1バイト)を全角文字(2バイト) に変換します。 
vbNarrow     8   文字列内の全角文字(2バイト)を半角文字(1バイト) に変換します。 
vbKatakana   16   文字列内のひらがなをカタカナに変換します。 
vbHiragana   32   文字列内のカタカナをひらがなに変換します。 
vbUnicode    64   ANSI文字列をUnicode文字列に変換します。
vbFromUnicode 128   Unicode文字列をANSI文字列に変換します。