皆さんは、VBAで全角文字を半角文字・半角文字を全角文字に変換する方法を知っていますか?全角で入力されている英字を半角にしたい場合、全角カタカナで書かれている文字を半角にしたい場合など、変換したいケースはよくあります。
そこで今回は、全角文字と半角文字を相互変換するためのStrConv関数の使い方といった基礎的なことから、
- StrConv関数を使ったサンプルコード
- 合わせて覚えると便利な文字列比較方法とは
- 関数の結果を手早く確認する方法とは
といった応用的な方法まで、徹底的に解説します!
全角文字・半角文字を相互変換するためのStrConv関数の使い方とは
はじめに、全角文字・半角文字を相互変換するためのStrConv関数の使い方について解説します。StrConv関数は次のように書くことで、簡単に全角文字・半角文字を相互変換することができます。使い方:
StrConv(文字列 , 変換方法)
変換方法は全角文字・半角文字の相互変換以外にもいくつかあるので、表形式で一覧にしました。
No | 値 | 意味 |
1 | vbUpperCase | 大文字に変換 |
2 | vbLowerCase | 小文字に変換 |
3 | vbProperCase | 各単語の先頭の文字を大文字に変換 |
4 | vbWide | 半角文字を全角文字に変換 |
5 | vbNarrow | 全角文字を半角文字に変換 |
6 | vbKatakana | ひらがなをカタカナに変換 |
7 | vbHiragana | カタカナをひらがなに変換 |
8 | vbUnicode | 文字列をUnicodeに変換 |
変換方法にvbNarrowを入れた場合は全角文字を半角文字、vbWideを入れた場合は半角文字を全角文字に変更することができます。
StrConv関数を使ったサンプルコード
次に、サンプルコードもとに、具体的な使い方を解説します。
サンプルコード:
Sub Test()
Dim strTarget As String
strTarget = "Excel2016 VBA サムライエンジニア"
'全角文字を半角文字に変換
Dim strResult_vbNarrow As String
strResult_vbNarrow = StrConv(strTarget, vbNarrow)
'半角文字を全角文字に変換
Dim strResult_vbWide As String
strResult_vbWide = StrConv(strTarget, vbWide)
'変換結果確認
Debug.Print "「Excel2016 VBA サムライエンジニア」変換結果" & vbCrLf & _
"------------------------------------------" & vbCrLf & _
"vbNarrow:" & strResult_vbNarrow & vbCrLf & _
"vbWide:" & strResult_vbWide
End Sub
実行結果:
「Exel2016 VBA サムライエンジニア」変換結果
------------------------------------------
vbNarrow:Excel2016 VBA サムライエンジニア
vbWide:Excel2016 VBA サムライエンジニア
vbNarrowではExel2016」「サムライエンジニア」の二つが半角文字に変換され、vbWideでは「VBA」が全角文字に変換されていますよね。このように、簡単に全角文字と半角文字を相互変換することができます。
合わせて覚えると便利な文字列比較方法とは
今回は全角文字・半角文字を相互変換する方法を解説しましたが、全角・半角で処理を分岐させたい場合、正しく変換されたか確認する必要がありますよね?StrComp関数を使えば簡単に文字列を比較することができるので、あわせて覚えておくと便利です。
サンプルコード:
Sub Test1()
Dim strMessage1 As String
Dim strMessage2 As String
strMessage1 = "文字列1"
strMessage2 = "文字列2"
If StrComp(strMessage1, strMessage2) = 0 Then
'文字列が一致したときの処理
Else
'文字列が一致しなかったときの処理
End If
End Sub
一致している場合は「0」、一致していない場合は「-1」で結果が返ってくるので、IF文の条件で結果が0になっているか確認するコードを書いています。このように、簡単に文字列を比較することができます。
StrComp関数を使った文字列比較方法については以下で詳しく解説しているので、気になる方は見てみてくださいね!
【ExcelVBA入門】文字列を完全一致・部分一致で比較する方法とは
更新日 : 2019年5月4日
補足:関数の結果を手早く確認する方法とは
ここまでStrConv関数を使った全角文字・半角文字を相互変換する方法について解説してきましたが、StrConv関数のように引数が多い場合、正しく変換されるか確認するために処理を何度も実行して確認するのは、少しめんどくさいですよね。
そんな時は、イミディエイトウィンドウを使った変数確認方法を覚えておくのがおすすめです!今回の場合だと、以下のようにイミディエイトウィンドウに書くだけで、簡単に関数の実行結果を確認することができます。
イミディエイトウィンドウに書くコード:
?StrConv("Excel2016",vbNarrow)
実行結果:
Excel2016
イミディエイトウィンドウの詳しい使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!
【ExcelVBA入門】デバッグに使うイミディエイトウィンドウとは?
更新日 : 2019年4月15日
まとめ
今回は、全角文字・半角文字を相互変換するためのStrConv関数の使い方について解説しました。VBAで全角文字・半角文字を変換したいケースはよくあります。使い方も簡単なので、ぜひ使ってみてくださいね!