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

【ExcelVBA入門】文字列を完全一致・部分一致で比較する方法とは
更新日 : 2019年5月4日

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

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

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

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

?StrConv("Excel2016",vbNarrow)

実行結果:

Excel2016

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

【ExcelVBA入門】デバッグに使うイミディエイトウィンドウとは?
更新日 : 2019年4月15日

まとめ

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

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。