CStr関数で指定した値を文字列型に変換します
VBA の Cstr は引数に指定した値のデータ型を文字列型に変えてしまう関数です。それでは、さっそく試してみましょう。まずは数値を文字列に変えてみます。
Sub CstrTest1()
Dim x As Double
x = 3.14
csx = CStr(x)
'VarType関数でデータ型を調べます
'(8が返れば文字列型)
mytype = VarType(csx)
Debug.Print mytype
End Sub
倍精度浮動小数点型 (Double型) の変数 x を Cstr の引数に指定しています。変換された値を csx に放り込んで、VarType 関数でデータ型を調べているのです。csx は Variant型なので、正確には内部処理形式のデータ型を調べていますが、そんな細かいことはあまり気にしないでいいです。実行すると「 8 」という数値が返ってきます。これはデータが文字列型 (String型) であることを示しています。
今度は Cstr に日付を入れてみます。
Sub CstrTest2()
Dim mydate As Date
mydate = Now()
csdate = CStr(mydate)
'VarType関数でデータ型を調べます
'(8が返れば文字列型)
mytype = VarType(csdate)
Debug.Print mytype
End Sub
Now関数で現在の日付と時刻を得て、それを Cstr関数で文字列に変換しています。実行してみると、やっぱり「 8 」が返ってくるので、ちゃんと文字列型になっています。
ここまで長々と説明しておいて、こう言ってはなんですけど、実は Cstr の使い道はほとんどありません。というのは、数値や日付を文字列型データに変換したいなら、String型変数に値を放り込んでしまえばそれで済むことだからです。たとえば上の日付を文字列に変えるマクロは、次のように書けばすっきりしたコードになります。
Sub CstrTest3()
Dim mydate As String
mydate = Now()
mytype = VarType(mydate)
Debug.Print mytype
End Sub
このマクロを実行しても、ちゃんと「 8 」が返ってくるので、文字列に変換されていることがわかります。