大体でIT
大体でIT
2022/4/9
Excel VBAで、全角かどうかを判定したい場合は、「半角」に変換して、元の文字列と「一致しない」かを比較するとできます。大文字・小文字、ひらがな・カタカナも同じ手順で、文字列の種類を判定することができます。文字列の種類を判定する方法について、マスターしていきましょう。
この記事では、文字列の種類を判定する方法について、ご紹介します。
全角と半角の判定は、「Lenで取得した文字数」と「vbFromUnicodeに変換してLenBで取得した文字数」を比較して、判定します。
「ひらがな」や「漢字」のように、全角のみの文字列があるため、全角と半角の判定はちょっと面倒です。
「大文字」の判定は、「小文字」に変換して一致しないかを比較します。
同じように、「ひらがな」の場合は、「カタカナ」に変換して、一致しないかを比較します。
文字列の種類を判定する方法について、マスターしていきましょう。
では、文字列の種類を判定する方法について、解説していきます。
全角・半角、大文字・小文字、ひらがな・カタカナを判定する方法がわかります。
文字列の種類を判定する方法について、VBAコードをまとめています。
VBAコードのみ確認したい場合に、ご活用ください。
Dim A
'全角の判定
A = "A"
Debug.Print Len(A) * 2 = LenB(StrConv(A, vbFromUnicode))
'半角の判定
A = "A"
Debug.Print Len(A) = LenB(StrConv(A, vbFromUnicode))
'全角と半角が混在しているかの判定
Dim A, B, C
A = "ABC"
B = Len(A)
C = LenB(StrConv(A, vbFromUnicode))
Debug.Print B <> C And B * 2 <> C
'大文字の判定
A = "A" '←大文字
Debug.Print A <> StrConv(A, vbLowerCase)
'小文字の判定
A = "a" '←小文字
Debug.Print A <> StrConv(A, vbUpperCase)
'ひらがなの判定
A = "あ" '←ひらがな
Debug.Print A <> StrConv(A, vbKatakana)
'カタカナの判定
A = StrConv("ア", vbWide) '←全角カタカナに変換する
Debug.Print A <> StrConv(A, vbHiragana)
全角と半角の判定(アルファベットとカタカナと数値)
全角と半角を判定する方法について、解説していきます。
全角と半角があるのは、アルファベットとカタカナ、数値になります。
全角を2文字で、半角を1文字として取得する方法を使って、全角と半角、そして全角と半角が混在しているかの判定をします。
「Lenで取得した文字数の2倍」と、「vbFromUnicodeに変換してLenBで取得した文字数」が、一致した場合に、全角と判定できます。
Sub TEST1()
Dim A
A = "A"
'全角の判定
Debug.Print Len (A) * 2 = LenB (StrConv(A, vbFromUnicode ))
End Sub
vbFromUniCodeに変換してLenBで文字列を取得すると、全角は2文字で、半角は1文字で取得することができます。
すべて全角であれば、Lenで取得した文字数の2倍と一致することなります。
全角の判定ができた
「Lenで取得した文字数」と、「vbFromUnicodeに変換してLenBで取得した文字数」が、一致した場合に、半角と判定できます。
Sub TEST2()
Dim A
A = "A"
'半角の判定
Debug.Print Len (A) = LenB (StrConv(A, vbFromUnicode ))
End Sub
vbFromUniCodeに変換してLenBで文字列を取得すると、全角は2文字で、半角は1文字で取得することができます。
すべて半角であれば、Lenで取得した文字数と一致することなります。
半角の判定ができた
「vbFromUnicodeに変換してLenBで取得した文字数」が、「Lenで取得した文字数」と一致しないで、かつ、「Lenで取得した文字数の2倍」とも一致しない場合に、混在していることになります。
Sub TEST3()
Dim A, B, C
A = "ABC"
B = Len(A)
C = LenB(StrConv(A, vbFromUnicode))
'全角と半角が混在しているかの判定
Debug.Print B <> C AND B * 2 <> C
End Sub
全角と半角が混在するかを判定できた
やり方は、先ほどと同じで大文字の判定をしたい場合は、「小文字」に変換して、元の文字列と一致しないかを比較します。
大文字の判定
文字列を「半角」に変換して、一致しないかを判定します。
Sub TEST4()
Dim A
A = "A" '←大文字
'大文字の判定
Debug.Print A <> StrConv(A, vbLowerCase )
End Sub
結果は、「True」で、大文字の判定ができました。
大文字を含む判定もできる
Sub TEST5()
Dim A
A = "Abc" '←大文字を含む文字列
'大文字の判定
Debug.Print A <> StrConv(A, vbLowerCase)
End Sub
結果は、「True」で大文字を含む判定ができました。
小文字の判定は、先ほどと反対で、「大文字」に変換して、元の文字列と一致しないかを判定します。
小文字の判定
Sub TEST6()
Dim A
A = "a" '←小文字
'小文字の判定
Debug.Print A <> StrConv(A, vbUpperCase )
End Sub
小文字を含む判定もできる
Sub TEST7()
Dim A
A = "aBC" '←小文字を含む文字列
'小文字の判定
Debug.Print A <> StrConv(A, vbUpperCase)
End Sub
結果は、「True」で、小文字を含む判定ができました。
やり方は、同じで、「ひらがな」は「カタカナ」に、「カタカナ」は「ひらがな」に変換して、「一致しない」かを比較します。
ただし、半角カタカナは注意が必要で、一旦、「全角」に変換してから、ひらがなに変換する必要があります。
ひらがなの判定
「カタカナ」に変換して、「一致しない」かを比較します。
Sub TEST8()
Dim A
A = "あ" '←ひらがな
'ひらがなの判定
Debug.Print A <> StrConv(A, vbKatakana )
End Sub
結果は、「True」で、ひらがなの判定ができました。
ひらがなを含む判定もできる
Sub TEST9()
Dim A
A = "あイウ" '←ひらがなを含む文字列
'ひらがなの判定
Debug.Print A <> StrConv(A, vbKatakana)
End Sub
結果は、「True」で、ひらがなを含む判定ができました。
カタカナの判定
「ひらがな」に変換して、元の文字列と「一致しない」かを判定します。
Sub TEST10()
Dim A
A = "ア" '←カタカナ
'カタカナの判定
Debug.Print A <> StrConv(A, vbHiragana )
End Sub
「True」となって、カタカナの判定ができました。
半角カタカナの判定ができない
Sub TEST11()
Dim A
A = "ア" '←半角カタカナ
'カタカナの判定
Debug.Print A <> StrConv(A, vbHiragana)
End Sub
実際は、カタカナを含むんですけど、半角カタカナの判定ができません。
全角に変換してカタカナの判定をする
半角カタカナを一旦、「全角」に変換してから、ひらがなに変換して、一致しないかの比較をします。
Sub TEST12()
Dim A
A = StrConv( "ア", vbWide) '←全角カタカナに変換する
'カタカナの判定
Debug.Print A <> StrConv(A, vbHiragana)
End Sub
結果は、「True」となって、半角カタカナの判定ができました。
こんな感じで、カタカナの判定をしたい場合は、一旦、全角に変換してから比較しましょう。
カタカナを含む判定
Sub TEST13()
Dim A
A = StrConv("アいう" , vbWide) '←カタカナを含む文字列
'カタカナの判定
Debug.Print A <> StrConv(A, vbHiragana)
End Sub
結果は、「True」となって、カタカナを含む判定ができました。
この記事では、文字列の種類を判定する方法について、ご紹介しました。
全角と半角の判定は、「Lenで取得した文字数」と「vbFromUnicodeに変換してLenBで取得した文字数」を比較して、判定します。
「ひらがな」や「漢字」のように、全角のみの文字列があるため、全角と半角の判定はちょっと面倒です。
「大文字」の判定は、「小文字」に変換して一致しないかを比較します。
同じように、「ひらがな」の場合は、「カタカナ」に変換して、一致しないかを比較します。
文字列の種類を判定する方法について、マスターしていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。