大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、全角かどうかを判定したい場合は、「半角」に変換して、元の文字列と「一致しない」かを比較するとできます。大文字・小文字、ひらがな・カタカナも同じ手順で、文字列の種類を判定することができます。文字列の種類を判定する方法について、マスターしていきましょう。

はじめに

この記事では、文字列の種類を判定する方法について、ご紹介します。

全角と半角の判定は、「Lenで取得した文字数」と「vbFromUnicodeに変換してLenBで取得した文字数」を比較して、判定します。

「ひらがな」や「漢字」のように、全角のみの文字列があるため、全角と半角の判定はちょっと面倒です。

「大文字」の判定は、「小文字」に変換して一致しないかを比較します。

同じように、「ひらがな」の場合は、「カタカナ」に変換して、一致しないかを比較します。

文字列の種類を判定する方法について、マスターしていきましょう。

では、文字列の種類を判定する方法について、解説していきます。

この記事を読むメリット

  • 全角・半角、大文字・小文字、ひらがな・カタカナを判定する方法がわかります。

本記事の内容を動画でまとめています

目次

VBAコードまとめ

文字列の種類を判定する方法について、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

Lenでは全角でも半角でも「1文字」となります。

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

Lenでは全角でも半角でも「1文字」となります。

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

実行してみます。

小文字の判定ができました

結果は、「True」で小文字の判定ができました。

小文字を含む判定もできる

同じ要領で、小文字を「含む」かの判定ができます。

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

実行してみます。

半角カタカナの判定ができません

結果は、「False」となりました。

実際は、カタカナを含むんですけど、半角カタカナの判定ができません。

全角に変換してカタカナの判定をする

半角カタカナを一旦、「全角」に変換してから、ひらがなに変換して、一致しないかの比較をします。

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で取得した文字数」を比較して、判定します。

「ひらがな」や「漢字」のように、全角のみの文字列があるため、全角と半角の判定はちょっと面倒です。

「大文字」の判定は、「小文字」に変換して一致しないかを比較します。

同じように、「ひらがな」の場合は、「カタカナ」に変換して、一致しないかを比較します。

文字列の種類を判定する方法について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す