和風スパゲティのレシピ

日本語でコーディングするExcelVBA

文字列の全角/半角を切り替える - StrConv関数

文字列をすべて全角/すべて半角にする方法を解説します。

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