この記事では、Excel VBAでStrConv関数を使用して、全角から半角、大文字から小文字に変換する方法について説明します。
StrConv関数
Excelで文字の全角、半角や、大文字、小文字を変換するには、StrConv関数を使用します。
構文
StrConv(string, conversion)
StrConv 関数の構文には、次の引数があります。
string:
必須です。変換する文字列式を指定します。
conversion:
必須です。整数型の値を指定します。 実行する変換の定数、または値の指定します。
複数の組み合わせも可能です。
例えば、「半角」で「大文字」の場合、「vbNarrow + vbUpperCase」のように、「+」を使って、複数の変換方法を入力します。
ただし、「ひらがな」と「カタカナ」のように、同時に指定できないものもあります。
■変換する定数の値
| 定数 | 値 | 説明 |
| vbUpperCase | 1 | 文字列を大文字に変換します。 |
| vbLowerCase | 2 | 文字列を小文字に変換します。 |
| vbProperCase | 3 | 文字列内の各単語の先頭の文字を大文字に変換します。 |
| vbWide | 4 | 文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換します。 |
| vbNarrow | 8 | 文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。 |
| vbKatakana | 16 | 文字列内のひらがなをカタカナに変換します。 |
| vbHiragana | 32 | 文字列内のカタカナをひらがなに変換します。 |
| vbUnicode | 64 | システムの既定のコード Unicode 使用して、文字列を既定の文字列に変換します。 |
| vbFromUnicode | 128 | Unicode からシステムの既定のコード ページに文字列を変換します。 |
大文字に変換する
StrConv関数を使用して、氏名(ローマ字)列の値を大文字に変換します。

■プログラム例
Sub Sample01Long()
Dim i As Integer '繰り返し処理用の変数
'「氏名(ローマ字)」の件数だけ処理を繰り返す
For i = 2 To Range("B1:B140").Rows.Count
'セルの値を「大文字」にする
Cells(i, 2).Value = StrConv(Cells(i, 2).Value _
, vbUpperCase)
Next
End Sub
■実行結果
氏名(ローマ字)列の値が、大文字に変換されました。

半角に変換する
氏名(ローマ字)列の値を大文字に変換しましたが、全角と半角が混ざっています。そのため、半角文字に統一します。
■プログラム例
Sub Sample02()
Dim i As Integer '繰り返し処理用の変数
'「氏名(ローマ字)」の件数だけ処理を繰り返す
For i = 2 To Range("C1:C140").Rows.Count
'セルの値を「半角」にする
Cells(i, 3).Value = StrConv(Cells(i, 3).Value, vbNarrow)
Next
End Sub
■実行結果
氏名(ローマ字)列の値が、半角に変換されました。

半角で小文字に変換する
メールアドレス列は、大文字小文字、全角半角が混ざっています。
半角で小文字に統一します。
■プログラム例
Sub Sample03()
Dim i As Integer '繰り返し処理用の変数
'「メールアドレス」の件数だけ処理を繰り返す
For i = 2 To Range("D1:D140").Rows.Count
'セルの値を「半角」、「小文字」にする
Cells(i, 3).Value = StrConv(Cells(i, 3).Value, vbNarrow + vbLowerCase)
Next
End Sub
■実行結果
メールアドレス列の値が、半角で小文字に変換されました。

まとめ
今回はStrConv関数を使用して、文字の全角、半角や、大文字、小文字を変換する方法について説明しました。

