この記事ではStrConv関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。
StrConv関数の使い方と注意点
StrConv関数は、文字列を指定した形式に変換するための関数です。
大文字・小文字変換、カタカナ⇔ひらがな変換、全角⇔半角変換などを簡単に行えます。
構文
StrConv(文字列, 変換種類 [, ロケールID])
- 文字列 : 変換対象の文字列
- 変換種類: どのように変換するかを指定する定数
- ロケールID(省略可): 変換に使用する国や地域の識別子。通常は省略でOK。
- 戻り値 : 変換後の文字列
変換の種類
定数値 | 値 | 内容 |
---|---|---|
vbUpperCase | 1 | 英字をすべて大文字に変換 |
vbLowerCase | 2 | 英字をすべて小文字に変換 |
vbProperCase | 3 | 単語の先頭文字を大文字に変換 |
vbWide | 4 | 半角文字を全角に変換 |
vbNarrow | 8 | 全角文字を半角に変換 |
vbKatakana | 16 | ひらがなをカタカナに変換 |
vbHiragana | 32 | カタカナをひらがなに変換 |
vbUnicode | 64 | Unicode文字列に変換 |
vbFromUnicode | 128 | Unicodeから変換(環境依存) |
使用例
英字をすべて大文字に変換
Sub Sample()
Dim text As String
text = "sample text"
Debug.Print StrConv(text, vbUpperCase)
End Sub
▶ 出力結果
SAMPLE TEXT
英字をすべて小文字に変換
Sub Sample()
Dim text As String
text = "Sample Text"
Debug.Print StrConv(text, vbLowerCase)
End Sub
▶ 出力結果
sample text
単語の先頭を大文字に変換
Sub Sample()
Dim text As String
text = "sample text"
Debug.Print StrConv(text, vbProperCase)
End Sub
▶ 出力結果
Sample Text
全角 ⇔ 半角変換
Sub Sample()
Dim text1 As String
text = "123ABCabc" ' 全角
Debug.Print StrConv(text, vbNarrow) ' 全角→半角
Dim text2 As String
text2 = "123ABCabc" ' 半角
Debug.Print StrConv(text2, vbWide) ' 半角→全角
End Sub
▶ 出力結果
123ABCabc
123ABCabc
ひらがな ⇔ カタカナ変換
Sub Sample()
Dim text1 As String
text = "さんぷる" ' ひらがな
Debug.Print StrConv(text, vbKatakana) ' ひらがな→カタカナ
Dim text2 As String
text2 = "サンプル" ' カタカナ
Debug.Print StrConv(text2, vbHiragana) ' カタカナ→ひらがな
End Sub
▶ 出力結果
サンプル
さんぷる
vbUnicode/vbFromUnicodeの使用例
Sub Sample()
Dim text As String
text = "ABC"
' Unicode 文字列に変換
Debug.Print StrConv(text, vbUnicode)
' Unicode から変換(環境依存)
Debug.Print StrConv(StrConv(text, vbUnicode), vbFromUnicode)
End Sub
▶ 出力結果(環境により出力結果に差が出る場合もあります)
A B C
ABC
vbUnicodeとvbFromUnicodeは通常のVBA開発ではあまり使用しません。
文字コードの変換を直接扱う特殊用途(外部ファイルとのやり取り等)に利用されます。
複数の変換を同時に行いたい場合
Or
演算子を使って組み合わせ可能です。
例:ひらがなを半角カタカナに変換
Sub Sample()
Dim text As String
text = "ひらがな"
Debug.Print StrConv(text, vbKatakana Or vbNarrow)
End Sub
▶ 出力結果
ヒラガナ
⚠️注意
日本語に対する大文字・小文字変換の挙動
日本語部分には変化がなく、英字部分のみが対象になります。
Sub Sample()
Dim text As String
text = "VBA テスト abcABC"
Debug.Print StrConv(text, vbUpperCase) ' 大文字に変換
Debug.Print StrConv(text, vbLowerCase) ' 小文字に変換
Debug.Print StrConv(text, vbProperCase) ' 単語の先頭を大文字に変換
End Sub
▶ 出力結果
VBA テスト ABCABC
vba テスト abcabc
Vba テスト Abcabc
日本語環境以外では一部の変換が使えない
vbKatakana
やvbHiragana
などは、日本語環境のVBAでのみ有効です。
海外版Excelでは期待通り動作しない場合があります。
vbProperCaseは英単語向け
vbProperCase
は単語の先頭を大文字に変換しますが、日本語の文章では意味がありません。
また、省略記号や略語の変換は意図しない結果になることがあります。
その他のVBA関数
【Excel VBA】VBAでよく使う関数一覧&基本の使い方