StrConv関数:文字列で大文字小文字や全角半角の変換などを行う
StrConv 関数は Excel VBA で用意されている関数の一つで、対象の文字列の大文字と小文字の変換や、全角文字と半角文字の変換を行った文字列を返します。ここでは Excel VBA における StrConv 関数の使い方について解説します。
(Last modified: )
StrConv関数の定義と使い方
StrConv
関数は対象の文字列に対して指定した種類の変換を行った結果の文字列を返します。
1 番目の引数に対象となる文字列を指定します。 2 番目の引数に変換する種類を表す数値を指定します。変換の種類は複数ありますが、まとめて複数の変換を行うことができます。省略可能な 3 番目の引数には、システム LocaleID と異なる場合の LocaleID を指定します。
2 番目の引数に指定できる変換の種類は次の通りです。
定数 | 値 | 説明 |
---|---|---|
vbUpperCase | 1 | 文字列を大文字に変換します |
vbLowerCase | 2 | 文字列を小文字に変換します |
vbProperCase | 3 | 文字列内のすべての単語の最初の文字を大文字に変換します |
vbWide | 4 | 文字列内の狭い (1 バイト) 文字をワイド (2 バイト) 文字に変換します |
vbNarrow | 8 | 文字列内のワイド (2 バイト) 文字を狭い (1 バイト) 文字に変換します |
vbKatakana | 16 | 文字列内のひらがな文字をカタカナ文字に変換します |
vbHiragana | 32 | 文字列内のカタカナ文字をひらがな文字に変換します |
vbUnicode | 64 | システムの既定のコードページを使用して、文字列を Unicode に変換します |
vbFromUnicode | 128 | 文字列を 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
B3 セルから B8 セルに入力されている文字列を、すべて小文字、すべて大文字、単語の先頭だけを大文字、にそれぞれ変換しセルに代入します。
なお 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
B3 セルから B6 セルに入力されている文字列をすべて全角文字に変換し C3 セルから C6 セルに代入します。
既に全角文字の場合は何も変わりません。また数字も全角文字に変換できますが、書式が文字列ではなく数値になっていると全角文字に変換されませんでした。
次に全角文字を半角文字に変換するサンプルです。
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
B3 セルから B6 セルに入力されている文字列をすべて半角文字に変換し C3 セルから C6 セルに代入します。
漢字のように全角文字であっても対応する半角文字がない文字については変換されません。
ひらがなとカタカナを変換する
文字列の中のひらがなからカタカナに変換したり、カタカナをひらがなに変換するサンプルです。変換の種類としてひらがなをカタカナにするには 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
B3 セルから B4 セルに入力されている文字列の中のひらがなからカタカナに変換し C3 セルから C4 セルに代入します。
次にカタカナをひらがなに変換するサンプルです。
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
B3 セルから B4 セルに入力されている文字列の中のカタカナからひらがなに変換し C3 セルから C4 セルに代入します。
なお半角カタカナはひらがなに変換することができませんでした。
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
そのままの文字列のバイト数を取得すると全角文字でも半角文字でも 3 文字であれば 6 バイトですが、いったん Shift_JIS に変換したあとでバイト数を取得すると全角文字であれば 3 文字で 6 バイトですが、半角文字であれば 3 文字で 3 バイトになります。
同じように LeftB
関数などで全角文字の場合は 2 バイト、半角文字の場合は 1 バイトとして扱いたい場合などに使用します。実際の例は「LeftB関数:文字列の左から指定のバイト数分だけ文字列を取得する」を参照されてください。
複数の変換を同時に行う
小文字を大文字に変換し、同時に半角文字を全角文字を変換するには次のように 2 番目の引数のところに定数を加算して記述します。
Option Explicit Sub StrConv関数() Debug.Print StrConv("hello", vbUpperCase + vbWide) End Sub
このサンプルでは "hello" を大文字に変換したあと全角文字に変換します。結果としてイミディエイトウィンドウには "HELLO" と表示されます。
-- --
Excel VBA における StrConv 関数の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。