VBAにおいて文字列変換を行う関数、StrConv関数を解説します。
第2引数で変換内容を指定でき、
「全角↔半角」「大文字↔小文字」「かな↔カナ」の変換をなどを行えます。
基本構文
変換後の文字列 = StrConv(元の文字列, 変換形式)
変換形式(Conversion)に用いることができる定数は以下の通りです。
| 定数 | 値 | 説明 |
|---|---|---|
| vbUpperCase | 1 | 小文字⇒大文字(英字) |
| vbLowerCase | 2 | 大文字⇒小文字(英字) |
| vbProperCase | 3 | 各単語の最初の文字だけを大文字(英字) |
| vbWide | 4 | 半角⇒全角(英数カナ) |
| vbNarrow | 8 | 全角⇒半角(英数カナ) |
| vbKatakana | 16 | ひらがな⇒全角カナ |
| vbHiragana | 32 | 全角カナ⇒ひらがな |
| vbUnicode | 64 | 文字列⇒Unicode |
| vbFromUnicode | 128 | Unicode⇒文字列 |
サンプルコード
' 変換の基本(英字大文字に) StrConv("abc", vbUpperCase) ' ABC ' 対象文字以外は変換されずそのまま残る StrConv("abcDEF123あいう", vbUpperCase) ' ABCDEF123あいう ' 引数を足し算すれば同時に変換することが可能 StrConv("ABC", vbLowerCase + vbNarrow) ' abc(小文字かつ半角に)
' 小文字⇒大文字(英字) StrConv("abc", vbUpperCase) ' ABC StrConv("abc", vbUpperCase) ' ABC(全角は全角) StrConv("ν", vbUpperCase) ' Ν(ギリシャ文字も変換可能) ' 大文字⇒小文字(英字) StrConv("ABC", vbLowerCase) ' abc StrConv("ABC", vbLowerCase) ' abc(全角は全角) StrConv("Ξ", vbLowerCase) ' ξ(ギリシャ文字も変換可能) ' 各単語の最初の文字だけを大文字(英字) ※ スペースしか対応していない StrConv("visual basic", vbProperCase) ' Visual Basic StrConv("visual_basic", vbProperCase) ' Visual_basic × StrConv("visual-basic", vbProperCase) ' Visual-basic × ' 半角⇒全角(英数カナ) StrConv("abc123カナ", vbWide) ' abc123カナ ' 全角⇒半角(英数カナ) StrConv("abc123カナ", vbNarrow) ' abc123カナ ' ひらがな⇒全角カナ StrConv("あいう", vbKatakana) ' アイウ ' 全角カナ⇒ひらがな StrConv("アイウ", vbHiragana) ' あいう StrConv("アイウ", vbHiragana) ' アイウ(半角カナには無反応) StrConv("アイウ", vbHiragana + vbWide) ' あいう(vbWideを足せばOK) ' 文字列⇒Unicode StrConv("あいう", vbUnicode) ' B0D0F0 ' Unicode⇒文字列 StrConv("B0D0F0", vbFromUnicode) ' あいう
解説
StrConv関数を使用することで、特定文字種を指定形式に変換することができます。
(対象の文字種以外の文字はそのまま残ります)
「全角↔半角」「大文字↔小文字」「かな↔カナ」「文字列↔Unicode」の変換を行うことができ、引数を足し算すれば同時に変換を行うことも可能です。
' 英数字を小文字かつ半角に StrConv("ABC", vbLowerCase + vbNarrow)
◇ 第2引数(Conversion)に用いることができる定数(再掲)
| 定数 | 値 | 説明 |
|---|---|---|
| vbUpperCase | 1 | 小文字⇒大文字(英字) |
| vbLowerCase | 2 | 大文字⇒小文字(英字) |
| vbProperCase | 3 | 各単語の最初の文字だけを大文字(英字) |
| vbWide | 4 | 半角⇒全角(英数カナ) |
| vbNarrow | 8 | 全角⇒半角(英数カナ) |
| vbKatakana | 16 | ひらがな⇒全角カナ |
| vbHiragana | 32 | 全角カナ⇒ひらがな |
| vbUnicode | 64 | 文字列⇒Unicode |
| vbFromUnicode | 128 | Unicode⇒文字列 |
注意すべき点として、全角↔半角変換には英数字だけでなくカタカナが含まれます。
実務では「英数字は半角のままカナを全角にしたい」ということもありますが、
これを一発で行う方法はありません。
文字列の中身を1文字ずつ調べて変換する必要がありますので、
この処理を行いたい場合はこちらの記事をご参考ください。
セル範囲内のすべての文字列を変換する
StrConv関数は関数のため、セル範囲に実行する場合はループを回す必要があります。
各種変換は以下のコードを参考に実装してください。
指定列内のすべての文字列を変換する
Dim wsデータ As Worksheet: Set wsデータ = Worksheets("○○") Dim 最終行 As Long 最終行 = wsデータ.UsedRange.Rows.Count + wsデータ.UsedRange.Row - 1 ' A列のすべての文字列を変換する Dim R As Long For R = 2 To 最終行 wsデータ.Cells(R, 1).Value = StrConv(wsデータ.Cells(R, 1).Value, vbXXXX) Next
特定のセル範囲内のすべての文字列を変換する
' セル範囲内のすべての文字列を変換する Dim セル As Range For Each セル In Worksheets("○○").Range("A1:D5") セル.Value = StrConv(セル.Value, vbXXXX) Next