【VBA】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
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

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

8

 String_Date を実行しても、ちゃんと「 8 」が返ってくるので、文字列に変換されていることがわかります。

Excel VBA
Excel VBA 表計算とプログラミング学習サイト

コメント

タイトルとURLをコピーしました