VBA CStr 関数:文字列に変換する

はじめに

Excel VBA マクロの CStr 関数から文字列に変換する方法を紹介します。

CStr 関数は、数値や日付などを文字列型 (String) に変換します。

数値ならそのまま文字列に変換します。1 なら "1" を返します。

日付なら Windows の形式に従って変換します。2000/1/2 3:4:5 なら "2000/01/02 3:04:05" などを返します。

明示的に数値や日付を文字列型に変換したいときに使用します。

数値を文字列に変換するには「数値を変換する」をご覧ください。
日付を文字列に変換するには「日付を変換する」をご覧ください。
  • 目次
    • 構文
    • 解説
    • 使用例

構文

CStr()
を文字列型 (String) に変換します。

引数「値」数値や日付などを指定します。
戻り値の型文字列型 (String)

解説

数値や日付を文字列型 (String) に代入すると、CStr 関数を使用したときと同じ結果になります。

引数「値」が文字列なら、そのまま返します。

引数「値」が数値なら、そのまま文字列に変換します。1 なら "1" を返します。

引数「値」が日時なら、Windows の「日付の短い形式」と「時刻の長い形式」に変換します。2000/1/2 3:4:5 なら "2000/01/02 3:04:05" などを返します。

Windows の形式を変更するには次の設定から行います。

  • Windows 11設定 > 時刻と言語 > 言語と地域 > 地域設定 > 形式を変更
  • Windows 10設定 > 時刻と言語 > 地域タブ > データ形式を変更する

引数「値」が Boolean 型なら、"True""False" を返します。

数値や日付の形式を指定して文字列に変換するには「Format 関数」を使用します。

使用例

文字列に変換する。

Dim s As String
s = CStr("Tips")
Debug.Print(s) ' Tips

s = CStr(123)
Debug.Print(s) ' 123

s = CStr(10.5)
Debug.Print(s) ' 10.5

s = CStr(-100)
Debug.Print(s) ' -100

s = CStr(#1/2/2013#)
Debug.Print(s) ' 2013/01/02、日付の短い形式

s = CStr(#1:02:03 AM#)
Debug.Print(s) ' 1:02:03、時刻の長い形式

s = CStr(CDate("2000/1/2 3:4:5"))
Debug.Print(s) ' 2000/01/02 3:04:05

s = CStr(True)
Debug.Print(s) ' True

数値や日付の書式や形式を指定

Format 関数」を使用して、数値や日付の書式や形式を指定して文字列に変換できます。

Dim c As Currency
c = 1234567

Debug.Print(Format(c,"#,###,###")) ' 1,234,567

Debug.Print(Format(c,"0,000,000")) ' 001,234,567

Debug.Print(Format(c,"0"))         ' 1234567

Debug.Print(Format(c,"#,###.00"))  ' 1,234,567.00

Debug.Print(Format(c, "0.00%"))    ' 123456700.00%

Debug.Print(Format(c, "\\#,###"))  ' \1,234,567、円マーク

Debug.Print(Format(c, "#,###円"))  ' 1,234,567円
Dim d As Date
d = "2000/1/2 3:4:56"

Debug.Print(Format(d,"yyyy/m/d"))       ' 2000/1/2

Debug.Print(Format(d,"yyyy年mm月dd日")) ' 2000年01月02日

Debug.Print(Format(d,"h:n:s"))          ' 3:4:56

Debug.Print(Format(d,"hh:nn:ss"))       ' 03:04:56