引数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
|