Excel VBAの「CStr関数」について解説します。
CStr関数とは
Excel VBA の CStr関数とは、指定された数値や日時などの引数を文字列型 (String型) に変換する関数です。
CStr関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
CStr(expression)
引数と戻り値
CStr 関数の引数と戻り値は次のとおりです。
Hex関数 | 説明 |
---|---|
引数(expression) | 【必須】任意の数式または文字列式を指定します。 |
戻り値 | 文字列型(String)を返します。 |
解説
CStr関数(Visual Basic for Applications リファレンス)の解説には、次のような記載があります。
CStr の戻り値は、式の引数に依存します。
expression の値 | 戻り値 |
---|---|
Boolean | True または False を含む文字列・ |
Date | システムの短い日付形式の日付を含む文字列・ |
Empty | 長さ 0 の文字列(“”)。 |
Error | Error という単語とエラー番号を含む文字列。 |
Null | 実行時エラー。 |
その他の数値 | 数字を含む文字列。 |
この解説の中で「Error」の部分については、いろいろなケースで検証してみましたが残念ながら再現できませんでした。
使用例
次の例は、様々な引数の値をCStr関数で文字列に変換して表示します。
引数自体の表示とそのデータ型に対するCStr関数で変換後の表示とデータ型を比較できるようにしています。
データ型は VarType関数で取得した値を独自のTypeName関数で関数名に変換して表示しています。
Sub CStr_test()
Dim v, s
Dim i As Integer
Debug.Print "各引数の結果を表示します。"
Debug.Print "上段:引数/引数の型"
Debug.Print "下段:CStrの結果/その型"
Debug.Print
'Boolean
Debug.Print "(9 > 10)が引数の場合"
v = (9 > 10)
i = VarType(v)
Debug.Print (v) & "/" & TypeName(i)
s = CStr(v)
i = VarType(s)
Debug.Print (s) & "/" & TypeName(i)
Debug.Print
'Date
Debug.Print "Now() が引数の場合"
v = Now()
i = VarType(v)
Debug.Print (v) & "/" & TypeName(i)
s = CStr(v)
i = VarType(s)
Debug.Print (s) & "/" & TypeName(i)
Debug.Print
'Empty
Debug.Print "Empty が引数の場合"
v = Empty
i = VarType(v)
Debug.Print (v) & "/" & TypeName(i)
s = CStr(v)
i = VarType(s)
Debug.Print (s) & "/" & TypeName(i)
Debug.Print
'Integer
Dim vi As Integer
Debug.Print "-3 が引数の場合"
vi = -3
i = VarType(vi)
Debug.Print (vi) & "/" & TypeName(i)
s = CStr(vi)
i = VarType(s)
Debug.Print (s) & "/" & TypeName(i)
Debug.Print
'Long
Dim vl As Long
Debug.Print "2147483647 が引数の場合"
vl = 2147483647
i = VarType(vl)
Debug.Print (vl) & "/" & TypeName(i)
s = CStr(vl)
i = VarType(s)
Debug.Print (s) & "/" & TypeName(i)
Debug.Print
'Single
Dim vs As Single
Debug.Print "3.402823E+38 が引数の場合"
vs = 3.402823E+38
i = VarType(vs)
Debug.Print (vs) & "/" & TypeName(i)
s = CStr(vs)
i = VarType(s)
Debug.Print (s) & "/" & TypeName(i)
Debug.Print
'Double
Dim vd As Double
Debug.Print "12345.6789 が引数の場合"
vd = 12345.6789
i = VarType(vd)
Debug.Print (vd) & "/" & TypeName(i)
s = CStr(vd)
i = VarType(s)
Debug.Print (s) & "/" & TypeName(i)
Debug.Print
'Currency
Dim vc As Currency
Debug.Print "99999999 が引数の場合"
vc = 99999999
i = VarType(vc)
Debug.Print (vc) & "/" & TypeName(i)
s = CStr(vc)
i = VarType(s)
Debug.Print (s) & "/" & TypeName(i)
Debug.Print
'Null
Debug.Print "Null が引数の場合"
v = Null
i = VarType(v)
Debug.Print (v) & "/" & TypeName(i)
s = CStr(v) '←実行時エラー'94'発生!
i = VarType(s)
Debug.Print (s) & "/" & TypeName(i)
End Sub
実行結果は次のとおりですが、99行目で「実行時エラー」が発生し中断されます。
CStr関数の引数が「Null」の場合は「実行時エラー」になることが確認できました。
次のコードが VarType関数で取得した値を関数名に変換するコード「TypeName関数」です。
Private Function TypeName(i As Integer)
Select Case i
Case 0: TypeName = """""" & "空"
Case 1: TypeName = "Null(有効なデータではない)"
Case 2: TypeName = "Integer(整数型)"
Case 3: TypeName = "Long(長整数)"
Case 4: TypeName = "Single(単精度浮動小数点数)"
Case 5: TypeName = "Double(倍精度浮動小数点数)"
Case 6: TypeName = "Currency(通貨値)"
Case 7: TypeName = "Date(日付値)"
Case 8: TypeName = "String(文字列)"
Case 9: TypeName = "Object"
Case 10: TypeName = "Error(エラー値)"
Case 11: TypeName = "Boolean(ブール値)"
End Select
End Function
「VarType関数」については、別途詳しく解説したいと思います。
おわりに
関数一覧はこちらです。
VBAサンプルファイルはダウンロードできます
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへトップリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA「CStr関数」で数値や日付などを文字列に変換する方法を解説しました。
変換された戻り値は、すべて文字列(String)型です。
引数の値が Null の場合は「実行時エラー」になるので、利用する場合は注意する必要があります。
解説は以上です。少しでもみなさまのお役に立てたなら幸いです(^^;