本ページには広告が含まれています。

Excel VBA CStr関数 数値などを文字列型に変換する

Excel VBA CStr関数 値を文字列型に変換する

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 の値戻り値
BooleanTrue または False を含む文字列・
Dateシステムの短い日付形式の日付を含む文字列・
Empty長さ 0 の文字列(“”)。
ErrorError という単語とエラー番号を含む文字列。
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関数で文字列に変換するテストコードの実行画像

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関数」については、別途詳しく解説したいと思います。

おわりに

Excel VBA「CStr関数」で数値や日付などを文字列に変換する方法を解説しました。

変換された戻り値は、すべて文字列(String)型です。

引数の値が Null の場合は「実行時エラー」になるので、利用する場合は注意する必要があります。

解説は以上です。少しでもみなさまのお役に立てたなら幸いです(^^;

関数一覧はこちらです。

スポンサーリンク

VBAサンプルファイルはダウンロードできます

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへトップリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!