【VBA入門】全角文字・半角文字を相互変換する方法について徹底解説

皆さんは、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関数を使った文字列比較方法については以下で詳しく解説しているので、気になる方は見てみてくださいね!

補足:関数の結果を手早く確認する方法とは

ここまでStrConv関数を使った全角文字・半角文字を相互変換する方法について解説してきましたが、StrConv関数のように引数が多い場合、正しく変換されるか確認するために処理を何度も実行して確認するのは、少しめんどくさいですよね。

そんな時は、イミディエイトウィンドウを使った変数確認方法を覚えておくのがおすすめです!今回の場合だと、以下のようにイミディエイトウィンドウに書くだけで、簡単に関数の実行結果を確認することができます。

イミディエイトウィンドウに書くコード:

?StrConv("Excel2016",vbNarrow)

実行結果:

Excel2016

イミディエイトウィンドウの詳しい使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

まとめ

今回は、全角文字・半角文字を相互変換するためのStrConv関数の使い方について解説しました。VBAで全角文字・半角文字を変換したいケースはよくあります。使い方も簡単なので、ぜひ使ってみてくださいね!

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次