StrConv関数:文字列で大文字小文字や全角半角の変換などを行う

StrConv 関数は Excel VBA で用意されている関数の一つで、対象の文字列の大文字と小文字の変換や、全角文字と半角文字の変換を行った文字列を返します。ここでは Excel VBA における StrConv 関数の使い方について解説します。

(Last modified: )

StrConv関数の定義と使い方

StrConv 関数は対象の文字列に対して指定した種類の変換を行った結果の文字列を返します。

StrConv(string,conversion)

1 番目の引数に対象となる文字列を指定します。 2 番目の引数に変換する種類を表す数値を指定します。変換の種類は複数ありますが、まとめて複数の変換を行うことができます。省略可能な 3 番目の引数には、システム LocaleID と異なる場合の LocaleID を指定します。

2 番目の引数に指定できる変換の種類は次の通りです。

定数説明
vbUpperCase1文字列を大文字に変換します
vbLowerCase2文字列を小文字に変換します
vbProperCase3文字列内のすべての単語の最初の文字を大文字に変換します
vbWide4文字列内の狭い (1 バイト) 文字をワイド (2 バイト) 文字に変換します
vbNarrow8文字列内のワイド (2 バイト) 文字を狭い (1 バイト) 文字に変換します
vbKatakana16文字列内のひらがな文字をカタカナ文字に変換します
vbHiragana32文字列内のカタカナ文字をひらがな文字に変換します
vbUnicode64システムの既定のコードページを使用して、文字列を Unicode に変換します
vbFromUnicode128文字列を Unicode からシステムの既定のコードページに変換します

次の例を見てください。

Debug.Print StrConv("FLOWER",vbLowerCase)  'flower
Debug.Print StrConv("Sun",vbWide)  'Sun

1 つ目の変換では大文字を小文字に変換しています。 2 つ目の変換では半角文字を全角文字に変換しています。

それでは変換方法の種類ごとに使い方を確認してみます。

大文字と小文字を変換する

文字列の文字をすべて大文字に変換したり、すべて小文字に変換したり、文字列に含まれるすべての単語の先頭文字だけを大文字にするサンプルです。変換の種類として大文字に変更するには vbUpperCase 、小文字に変換するには vbLowerCase 、単語の先頭文字を大文字に変換するには vbProperCase を指定します。

Option Explicit

Sub StrConv関数()
    Dim i As Integer

    For i = 3 To 7
        Cells(i, 3).Value = StrConv(Cells(i, 2).Value, vbUpperCase)
        Cells(i, 4).Value = StrConv(Cells(i, 2).Value, vbLowerCase)
        Cells(i, 5).Value = StrConv(Cells(i, 2).Value, vbProperCase)
    Next i
End Sub

大文字と小文字を変換する(1)

B3 セルから B8 セルに入力されている文字列を、すべて小文字、すべて大文字、単語の先頭だけを大文字、にそれぞれ変換しセルに代入します。

大文字と小文字を変換する(2)

なお vbProperCase を指定した場合、単語の先頭文字は大文字になりますが、それ以外の文字はすべて小文字に変換されます。先頭文字だけが変換されるわけではない点にご注意ください。

全角文字と半角文字を変換する

文字列の中の全角文字から半角文字に変換したり、半角文字を全角文字に変換するサンプルです。変換の種類として全角文字を半角文字にするには vbNarrow 、半角文字を全角文字に変換するには vbWide を指定します。

最初に半角文字を全角文字に変換するサンプルです。

Option Explicit

Sub StrConv関数()
    Dim i As Integer

    For i = 3 To 6
        Cells(i, 3).Value = StrConv(Cells(i, 2).Value, vbWide)
    Next i
End Sub

全角文字と半角文字を変換する(1)

B3 セルから B6 セルに入力されている文字列をすべて全角文字に変換し C3 セルから C6 セルに代入します。

全角文字と半角文字を変換する(2)

既に全角文字の場合は何も変わりません。また数字も全角文字に変換できますが、書式が文字列ではなく数値になっていると全角文字に変換されませんでした。

次に全角文字を半角文字に変換するサンプルです。

Option Explicit

Sub StrConv関数()
    Dim i As Integer

    For i = 3 To 6
        Cells(i, 3).Value = StrConv(Cells(i, 2).Value, vbNarrow)
    Next i
End Sub

全角文字と半角文字を変換する(3)

B3 セルから B6 セルに入力されている文字列をすべて半角文字に変換し C3 セルから C6 セルに代入します。

全角文字と半角文字を変換する(4)

漢字のように全角文字であっても対応する半角文字がない文字については変換されません。

ひらがなとカタカナを変換する

文字列の中のひらがなからカタカナに変換したり、カタカナをひらがなに変換するサンプルです。変換の種類としてひらがなをカタカナにするには vbKatakana 、カタカナをひらがなに変換するには vbHiragana を指定します。

最初にひらがなをカタカナに変換するサンプルです。

Option Explicit

Sub StrConv関数()
    Dim i As Integer

    For i = 3 To 4
        Cells(i, 3).Value = StrConv(Cells(i, 2).Value, vbKatakana)
    Next i
End Sub

ひらがなとカタカナを変換する(1)

B3 セルから B4 セルに入力されている文字列の中のひらがなからカタカナに変換し C3 セルから C4 セルに代入します。

ひらがなとカタカナを変換する(2)

次にカタカナをひらがなに変換するサンプルです。

Option Explicit

Sub StrConv関数()
    Dim i As Integer

    For i = 3 To 5
        Cells(i, 3).Value = StrConv(Cells(i, 2).Value, vbHiragana)
    Next i
End Sub

ひらがなとカタカナを変換する(3)

B3 セルから B4 セルに入力されている文字列の中のカタカナからひらがなに変換し C3 セルから C4 セルに代入します。

ひらがなとカタカナを変換する(4)

なお半角カタカナはひらがなに変換することができませんでした。

UnicodeとShift_JISを変換する

Excel VBA では文字コードとして Unicode(UTF-16) を使用しています。この文字コードをシステムの規定の文字コード ( Windows 環境であれば Shift_JIS )に変換するには vbFromUnicode を指定します。逆にシステムの規定の文字コードから Unicode(UTF-16) に変換するには vbUnicode を指定します。

簡単なサンプルとして文字列のバイト数を調べる場合に VBA では LenB 関数を使いますが、デフォルトの文字コードだと全角文字でも半角文字でも 1 文字は 2 バイトです。そこで全角文字は 1 文字を 2 バイト、半角文字は 1 文字を 1 バイトとして数えたい場合にいったん Shift_JIS に変換してから LenB 関数を使用します。

Option Explicit

Sub StrConv関数()
    Debug.Print LenB("東京都")
    Debug.Print LenB("ABC")

    Debug.Print LenB(StrConv("東京都", vbFromUnicode))
    Debug.Print LenB(StrConv("ABC", vbFromUnicode))
End Sub

UnicodeとShift_JISを変換する(1)

そのままの文字列のバイト数を取得すると全角文字でも半角文字でも 3 文字であれば 6 バイトですが、いったん Shift_JIS に変換したあとでバイト数を取得すると全角文字であれば 3 文字で 6 バイトですが、半角文字であれば 3 文字で 3 バイトになります。

UnicodeとShift_JISを変換する(2)

同じように LeftB 関数などで全角文字の場合は 2 バイト、半角文字の場合は 1 バイトとして扱いたい場合などに使用します。実際の例は「LeftB関数:文字列の左から指定のバイト数分だけ文字列を取得する」を参照されてください。

複数の変換を同時に行う

小文字を大文字に変換し、同時に半角文字を全角文字を変換するには次のように 2 番目の引数のところに定数を加算して記述します。

Option Explicit

Sub StrConv関数()
    Debug.Print StrConv("hello", vbUpperCase + vbWide)
End Sub

複数の変換を同時に行う(1)

このサンプルでは "hello" を大文字に変換したあと全角文字に変換します。結果としてイミディエイトウィンドウには "HELLO" と表示されます。

複数の変換を同時に行う(2)

-- --

Excel VBA における StrConv 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。