VBA で文字列を扱う時に Cstr 関数を使うことがあります。Cstr 関数は数値や日付などのデータ型を文字列に変換するための関数であり、文字列をそのまま使う場合にも利用されます。
【VBA】CStr関数
VBA の Cstr は引数に指定した値のデータ型を文字列型に変えてしまう関数です。それでは、さっそく試してみましょう。まずは数値を文字列に変えてみます。
'[VBA] Cstrで数値を文字列に変換 Sub Cstr_Test_1() Dim x As Double x = 3.14 csx = CStr(x) 'VarType関数でデータ型を調べます '(8が返れば文字列型) mytype = VarType(csx) Debug.Print mytype End Sub 'Cstr_Test_1の実行結果: '8
倍精度浮動小数点型 (Double型) の変数 x を Cstr の引数に指定しています。変換された値を csx に放り込んで、VarType 関数でデータ型を調べているのです。csx は Variant型なので、正確には内部処理形式のデータ型を調べていますが、そんな細かいことはあまり気にしないでいいです。Cstr_Test_1() を実行すると「8」が返ってきます。これはデータが文字列型 (String型) であることを示しています。
今度は Cstr に日付を入れてみます。
'[VBA] Cstrで日付を文字列に変換 Sub Cstr_Test_2() Dim mydate As Date mydate = Now() 'Cstrで日付を文字列に変換 csdate = CStr(mydate) 'VarType関数でデータ型を調べます '(8が返れば文字列型) mytype = VarType(csdate) Debug.Print mytype End Sub 'Cstr_Test_2実行結果 '8
Now関数で現在の日付と時刻を得て、それを Cstr関数で文字列に変換しています。Cstr_Test_2() を実行してみると、やっぱり「8」が返ってくるので、ちゃんと文字列型になっています。
ここまで長々と説明しておいて、こう言ってはなんですけど、実は Cstr の使い道はほとんどありません。というのは、数値や日付を文字列型データに変換したいなら、String型変数に値を放り込んでしまえばそれで済むことだからです。Cstr_Test_2() は次のように書けばすっきりします。
'[VBA] 日付を文字列に変えるプロシージャ
Sub String_Date()
Dim mydate As String
mydate = Now()
mytype = VarType(mydate)
Debug.Print mytype
End Sub
'String_Dateの実行結果:
'8
String_Date を実行しても、ちゃんと「8」が返ってくるので、文字列に変換されていることがわかります。
コメント
ChatGPTにVBAのCstrについて質問しました
[Q] VBAのCstrについて、幼い子供にもわかるように説明してください。
[ChatGPT] VBAのCstrは、数字や日付などの「数字や日付」をコンピューターが理解できる「文字列」に変換する機能です。例えば「123」という数字を「123」という文字列に変換することができます。これは、コンピューターが数字や日付を扱う際に、文字列として扱いたい場合に便利です。例えば、エクセルのセルに数値を入力した際に、その値を文字列として扱いたい場合には、Cstr関数を使って数値を文字列に変換することができます。Cstr関数は、VBAの中で「文字列を扱う」ときに、とても重要な機能となっています。そして、この機能を使うことで、数字や日付を文字列として扱うことができるようになります。