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文字列に変換します。
|