本ページには広告が含まれています。

Excel VBA StrConv関数 文字列を指定文字種に変換

StrConv関数 文字列を指定文字種に変換する

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 定数(値)一覧

定数説明
vbUpperCase1文字列を大文字に変換します
vbLowerCase2文字列を小文字に変換します
vbProperCase3文字列内の各単語の先頭だけ大文字に変換します
vbWide4* 文字列内の半角文字を全角文字に変換します
vbNarrow8* 文字列内の全角文字を半角文字に変換します
vbKatakana16**文字列内のひらがなをカタカナに変換します
vbHiragana32**文字列内のカタカナをひらがなに変換します
vbUnicode64システムの既定のコードページを使用して、
文字列を Unicode に変換します
vbFromUnicode128文字列を Unicode からシステムの既定の
コードページに変換します

※ * 東アジア ロケールに適用されます。 ** 日本のみに適用されます。

引数 conversion には「Or」または「+」を使って複数の定数をまとめて指定することができます。

例えば vbUpperCase Or vbWide のように Or を使用して、複数の文字種をまとめて変換できます。

vbWide と vbNarrow や vbKatakana と vbHiragana のように組み合わせできない設定の場合は「エラー 5 プロシージャの呼び出し、または引数が不正です。」が発生します。

戻り値

戻り値 説明
文字列指定した文字種に変換された文字列が返ります
引数 string Null が含まれている場合は、 Null返ります。

解説(使用例)

では、使用例のコードと実行結果のイミディエイト画像で解説していきます。

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

実行結果のイミディエイトがこちらです。

テストコード1の実行結果

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

実行結果のイミディエイトがこちらです。

テストコード2の実行結果

定数の組み合わせをいろいろ試してみてください。

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

実行結果のイミディエイトがこちらです。

テストコード3の実行結果

Byte 配列からループで文字コードを書き出しています。

InputBox の入力文字を変換する

例えば、フォームに入力された文字をすべて全角にしたい場合の例です。

Sub StrConv_test_06()
  Dim str As String
  str = InputBox("文字列を入力してください")
  MsgBox "入力された " & str & " は " & vbCrLf & _
         StrConv(str, vbWide) & " すべて全角に変換されました"
End Sub

InputBox への入力をこのようにした場合

InputBox 入力画像

結果の MsgBox はこちらです。

StrConv_test_06実行結果のMsgBox画像

こんな感じです。全部半角にする場合は vbNarrow にすればOKです。

電話番号や生年月日のなど数字の入力矯正に使うことができますね。

入力された文字種を調べないで強制的に変換しています。

おわりに

Excel VBA「StrConv関数」で文字列の文字種を変換する方法について解説しました。

文字列を「大文字/小文字」「全角/半角」「ひらがな/カタカナ」などに変換したいときなどに使用します。英文字の先頭だけ大文字に変換する vbProperCase などは、英語を使う方には便利なのでしょうか。

また、文字コードを変換する場合にはこの「StrConv関数」を使います。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらです。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!