Excel VBAの「StrConv関数」について解説します。
StrConv関数とは
Excel VBA の StrConv関数とは、対象文字列の文字種を指定された文字種に変換します。
※ 大文字 ⇔ 小文字、全角 ⇔ 半角、ひらがな ⇔ カタカナ など
StrConv関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
StrConv(string, conversion [, LCID])
※ LCID は ロケールID(LoCale IDentifiers)のことで、言語を表すコードです。システムに規定で設定されている言語以外を指定する場合に使用できるオプションです。
引数
引数 | 説明 |
---|---|
string | 【必須】変換する文字列(式)を指定します |
conversion | 【必須】変換の種類を指定します |
LCID | 【省略可能】システムと異なる言語指定オプション |
変換の種類 conversion 定数(値)一覧
定数 | 値 | 説明 |
---|---|---|
vbUpperCase | 1 | 文字列を大文字に変換します |
vbLowerCase | 2 | 文字列を小文字に変換します |
vbProperCase | 3 | 文字列内の各単語の先頭だけ大文字に変換します |
vbWide | 4 | * 文字列内の半角文字を全角文字に変換します |
vbNarrow | 8 | * 文字列内の全角文字を半角文字に変換します |
vbKatakana | 16 | **文字列内のひらがなをカタカナに変換します |
vbHiragana | 32 | **文字列内のカタカナをひらがなに変換します |
vbUnicode | 64 | システムの既定のコードページを使用して、 文字列を Unicode に変換します |
vbFromUnicode | 128 | 文字列を Unicode からシステムの既定の コードページに変換します |
※ * 東アジア ロケールに適用されます。 ** 日本のみに適用されます。
引数 conversion には「Or」または「+」を使って複数の定数をまとめて指定することができます。
例えば vbUpperCase Or vbWide のように Or を使用して、複数の文字種をまとめて変換できます。
vbWide と vbNarrow や vbKatakana と vbHiragana のように組み合わせできない設定の場合は「エラー 5 プロシージャの呼び出し、または引数が不正です。」が発生します。
戻り値
戻り値 | 説明 |
---|---|
文字列 | 指定した文字種に変換された文字列が返ります |
解説(使用例)
では、使用例のコードと実行結果のイミディエイト画像で解説していきます。
StrConv 変換テスト1(英文字)
「大文字/小文字」「全角/半角」など英文字の変換例です。
Sub StrConv_test_01()
Dim str As String
str = "apple pie" '文字列を変数に代入
Debug.Print "はじめに vbUpperCase で"
Debug.Print str & " を vbUpperCase で大文字に変換"
str = StrConv(str, vbUpperCase)
Debug.Print (str) ' APPLE PIE
Debug.Print vbLf & "次は vbLowerCase で"
Debug.Print str & " を小文字に変換"
str = StrConv(str, vbLowerCase)
Debug.Print (str) ' apple pie
Debug.Print
Debug.Print vbLf & "次は vbProperCase で"
Debug.Print str & " を先頭を大文字に変換"
str = StrConv(str, vbProperCase)
Debug.Print (str) ' Apple Pie
Debug.Print
Debug.Print vbLf & "次は vbWide で"
Debug.Print str & " を全角文字に変換"
str = StrConv(str, vbWide)
Debug.Print (str) ' Apple Pie
Debug.Print
Debug.Print vbLf & "次は vbNarrow で"
Debug.Print str & " を半角文字に変換"
str = StrConv(str, vbNarrow)
Debug.Print (str) ' Apple Pie
End Sub
実行結果のイミディエイトがこちらです。
vbProperCase で単語区切りを認識する記号は、Null (Chr$(0))、水平タブ (Chr$(9))、改行 (Chr$(10))、垂直タブ (Chr$(11))、フォーム フィード (Chr$(12))、キャリッジ リターン (Chr$(13)) と スペース (Chr$(32)) です。
StrConv 変換テスト2(kana文字、組み合わせ)
「カタカナ/ひらがな」「定数の組み合わせ」例です。
Sub StrConv_test_02()
Dim str As String
str = "あっぷるぱい" '文字列を変数に代入
Debug.Print "はじめに vbKatakana で"
Debug.Print str & " をカタカナに変換"
str = StrConv(str, vbKatakana)
Debug.Print (str) ' アップルパイ
Debug.Print vbLf & "次は vbHiragana で"
Debug.Print str & " をひらがなに変換"
str = StrConv(str, vbHiragana)
Debug.Print (str) ' あっぷるぱい
Debug.Print vbLf & "次は vbNarrow Or vbKatakana で"
Debug.Print str & " を半角のカタカナに変換"
str = StrConv(str, vbNarrow Or vbKatakana)
Debug.Print (str) ' アップルパイ
Debug.Print vbLf & "次は vbWide Or vbHiragana で"
Debug.Print str & " を全角のひらがなに変換"
str = StrConv(str, vbWide Or vbHiragana)
Debug.Print (str) ' あっぷるぱい
End Sub
実行結果のイミディエイトがこちらです。
定数の組み合わせをいろいろ試してみてください。
Unicode文字列をANSI文字列に変換
StrConv 関数を使用して Unicode 文字列を ANSI 形式の Byte 配列に変換します。
Sub StrConv_test_03()
Dim i As Long
Dim x() As Byte
x = StrConv("Apple Pie", vbFromUnicode)
For i = 0 To UBound(x)
Debug.Print x(i)
Next
End Sub
実行結果のイミディエイトがこちらです。
Byte 配列からループで文字コードを書き出しています。
InputBox の入力文字を変換する
例えば、フォームに入力された文字をすべて全角にしたい場合の例です。
Sub StrConv_test_06()
Dim str As String
str = InputBox("文字列を入力してください")
MsgBox "入力された " & str & " は " & vbCrLf & _
StrConv(str, vbWide) & " すべて全角に変換されました"
End Sub
InputBox への入力をこのようにした場合
結果の MsgBox はこちらです。
こんな感じです。全部半角にする場合は vbNarrow にすればOKです。
電話番号や生年月日のなど数字の入力矯正に使うことができますね。
入力された文字種を調べないで強制的に変換しています。
おわりに
VBAの関数一覧はこちらです。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA「StrConv関数」で文字列の文字種を変換する方法について解説しました。
文字列を「大文字/小文字」「全角/半角」「ひらがな/カタカナ」などに変換したいときなどに使用します。英文字の先頭だけ大文字に変換する vbProperCase などは、英語を使う方には便利なのでしょうか。
また、文字コードを変換する場合にはこの「StrConv関数」を使います。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;