即効テクニック |
引数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