この記事では、VBAを使ってアルファベットや数字の半角と全角を変換する方法を実際のVBAコードも含めて説明します。
例えば、文字列の比較処理をする場合や、何らかの入力元になるデータなど、半角・全角の統一性や入力規則が求められる場合があります。ひとつひとつのデータを目視して確認するのは、非現実的です。
半角と全角を変換する方法と、応用編として特定の列の最終行まで変換を繰り返すVBAコードを紹介しますので、早速、見ていきましょう。
VBA│半角から全角に変換する
この章では、ExcelのセルA1に入力されている半角の Programing という文字列を、全角の Programing という文字列に変換するVBAコードを紹介します。
変換後の文字列は、下記イメージのようにセルB1に表示することとします。
半角を全角に変換するVBAコード
Rangeプロパティ
Sub Sample()
Range(“B1”) = StrConv(Range(“A1”), vbWide)
End Sub
Cellsプロパティ
Sub Sample()
Cells(1, 2) = StrConv(Cells(1, 1), vbWide)
End Sub
VBA│全角から半角に変換する
この章では、ExcelのセルA1に入力されている全角の Programing という文字列を、半角の Programing という文字列に変換するVBAコードを紹介します。
変換後の文字列は、下記イメージのようにセルB1に表示することとします。
全角を半角に変換するVBAコード
Rangeプロパティ
Sub Sample()
Range(“B1”) = StrConv(Range(“A1”), vbNarrow)
End Sub
Cellsプロパティ
Sub Sample()
Cells(1, 2) = StrConv(Cells(1, 1), vbNarrow)
End Sub
半角・全角変換を最終行まで実行する
この章では、ExcelのA列の各セルに入力されている文字列を全角に変換し、変換後の文字列をB列に転記するVBAコードを紹介します。
なお、文字列は列の7行目まで入力されていますが、最終行はVBAで取得することとします。
半角・全角変換を最終行まで実行するVBAコード
Sub Sample()
Dim i As Long
Dim LastRow As Long
LastRow = Range(“A1”).End(xlDown).Row
For i = 1 To LastRow
Cells(i, 2) = StrConv(Cells(i, 1), vbWide)
Next i
End Sub
このVBAコードでA列最終行までの半角の文字列がすべて全角に変換されて、B列に転記されます。なお、7行目の「C言語」のように全角の文字列(日本語)が含まれていても、特にエラーは発生しません。
「半角が見つかった場合には全角に変換する」という風に理解すればよいでしょう。