HOME > 即効テクニック > Excel VBA > 文字列操作関連のテクニック > 指定した方法で文字列を変換する(StrConv関数)

即効テクニック

文字列操作関連のテクニック

指定した方法で文字列を変換する(StrConv関数)

(Excel 2013/2016)
引数Stringで指定した文字列を対象に、引数Conversionで指定した種類の変換を行ないます。定数は「vbUpperCase + vbWide」(大文字と全角)のように組み合わせることができますが、矛盾した組み合わせでは指定できません。引数LCIDには、システムとはことなる国別情報識別子を利用したい場合に指定をします。引数Conversionで指定する定数は次の一覧のとおりです。

・引数conversionで指定する定数一覧(VbStrConv)

定数       値   内容

vbUpperCase    1   文字列を大文字に変換
vbLowerCase    2   文字列を小文字に変換
vbProperCase    3   文字列の各単語の先頭の文字を大文字に変換します。
vbWide       4   文字列内の半角文字を全角文字に変換
vbNarrow      8   文字列内の全角文字を半角文字に変換
vbKatakana    16   文字列内のひらがなをカタカナに変換
vbHiragana    32   文字列内のカタカナをひらがなに変換
vbUnicode     64   システムの既定のコードページを使って文字列をUnicodeに変換
vbFromUnicode   128   文字列をUnicodeからシステムの既定のコードページに変換


 構文 StrConv(String, Conversion, LCID)

 設定項目        内容
 String     変換対象の文字列を指定 [省略不可]
 Conversion   変換の種類の合計値を指定(表参照) [省略不可]
 LCID      国別情報識別子 (LCID) を指定 [省略可能]

次のサンプルは、全角の小文字で入力されたワークシート中のアルファベットを、全て半角に変換し、さらには先頭の文字列を大文字に変換します。

●サンプル1●
Sub StrConvSamp1()
    Dim c As Range

    For Each c In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
        '---半角+先頭大文字
        c.Value = StrConv(c.Value, vbNarrow + vbProperCase)
    Next

End Sub

●ポイント●
Excel97以降はUnicode対応となったため、半角文字であっても2バイトと計算されます。
半角文字は1バイトとして計算したい場合には、StrConv関数の引数にvbFromUnicodeを指定し、ANSI文字列に変換します。

次のサンプルは、対象の文字列が半角か全角か、両者が混在しているかを判断するものです。


●サンプル2●
Sub StrConvSamp2()
    Dim myStr As String
    Dim myByte As Integer, myChr As Integer

    myStr = InputBox("文字を入力してください")
    If myStr = "" Then Exit Sub
    '---ANSI文字列でバイト数算出
    myByte = LenB(StrConv(myStr, vbFromUnicode))
    '---文字数の算出
    myChr = Len(myStr)
    '---文字数×2=バイト数
    If (myChr * 2) = myByte Then
        MsgBox "すべて全角文字です"
    '---文字数=バイト数
    ElseIf myChr = myByte Then
        MsgBox "すべて半角文字です"
    Else
        MsgBox "全角・半角が混在しています"
    End If

End Sub