文字列をすべて全角/すべて半角にする方法を解説します。
StrConv関数を使用し、第2引数にvbWide/vbNarrowを渡します。
基本構文
' 半角 ⇒ 全角 全角文字列 = StrConv(元の文字列, vbWide) ' 全角 ⇒ 半角 半角文字列 = StrConv(元の文字列, vbNarrow)
サンプルコード
' 変換例 StrConv("あいう123", vbWide) ' = あいう123 StrConv("あいう123", vbNarrow) ' = あいう123 StrConv("ABC123", vbWide) ' = ABC123 StrConv("ABC123", vbNarrow) ' = ABC123 ' カナも対象のため注意 StrConv("アイウ123", vbWide) ' = アイウ123 StrConv("アイウ123", vbNarrow) ' = アイウ123
解説
文字列の全角/半角切替をVBAで行う場合はStrConv関数を使用します。
Excelのシート関数ではJIS/ASCの2つの関数になっていますが、
VBAはStrConv関数1つで、第2引数によって変換内容を決定します。
使用例の通り、既に全角の文字をvbWideにしても変化はありません。
注意点として、この変換はカタカナの全角↔半角も対象になっています。
実務では「英数字は半角のままカナを全角にしたい」ということがありますが、
これを一発で行う方法はありません。
文字列の中身を1文字ずつ調べて変換する必要がありますので、
この処理を行いたい場合はこちらの記事をご参考ください。
セル範囲内のすべての文字列を全角/半角に切り替える
StrConv関数は関数のため、セル範囲に実行する場合はループを回す必要があります。
以下のコードを参考に実装してください。
指定列内のすべての文字列を全角/半角に切り替える
Dim wsデータ As Worksheet: Set wsデータ = Worksheets("○○") Dim 最終行 As Long 最終行 = wsデータ.UsedRange.Rows.Count + wsデータ.UsedRange.Row - 1 ' A列のすべての文字列を全角/半角に切り替える Dim R As Long For R = 2 To 最終行 ' 半角 ⇒ 全角 wsデータ.Cells(R, 1).Value = StrConv(wsデータ.Cells(R, 1).Value, vbWide) ' 全角 ⇒ 半角 wsデータ.Cells(R, 1).Value = StrConv(wsデータ.Cells(R, 1).Value, vbNarrow) Next
特定のセル範囲内のすべての文字列を全角/半角に切り替える
' セル範囲内のすべての文字列を全角/半角に切り替える Dim セル As Range For Each セル In Worksheets("○○").Range("A1:D5") ' 半角 ⇒ 全角 セル.Value = StrConv(セル.Value, vbWide) ' 全角 ⇒ 半角 セル.Value = StrConv(セル.Value, vbNarrow) Next