サイトについて      連絡先   検索

VBA 数値を変換する

はじめに

Excel VBA マクロの数値 (Integer など) を文字列へ変換する方法を紹介します。

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

日付や時間に変換する方法も紹介します。

  • 目次
    • 文字列に変換する
    • 日付に変換する

文字列に変換する

特別な操作をしなくても、文字列型に数値を代入すると自動的に変換されます。


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

書式や形式を指定して文字列に変換するには「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

Excel のセルの書式設定に似ています。

日付に変換する

特別な操作をしなくても、日付型に数値を代入すると自動的に変換されます。日付型の初期値1899/12/30に数値の日数を加えた日付になります。


Dim d As Date

d = 1
Debug.Print (d) ' 1899/12/31

d = 0
Debug.Print (d) ' 0:00:00 

d = -1
Debug.Print (d) ' 1899/12/29

d = d + 2
Debug.Print (d) ' 1899/12/31

0 が 0:00:00 になっているのは時刻を表すためです。例えば 1 時 は正確には 1899/12/30 1:00:00 です。この日付が省略されています。

小数を代入すると時刻になります。1 をその時間で割った値を代入します。


Dim d As Date

d = (1 / 24)           ' 1 時間
Debug.Print (d) ' 1:00:00

d = (1 / 24 / 60)      ' 1 分
Debug.Print (d) ' 0:01:00

d = (1 / 24 / 60 / 60) ' 1 秒
Debug.Print (d) ' 0:00:01

DateSerial 関数」を使用して、年月日を指定して日付を取得できます。


Dim d As Date
d = DateSerial(2000, 12, 31)
Debug.Print (d) ' 2000/12/31

TimeSerial 関数」を使用して、時分秒を指定して時刻を取得できます。


Dim d As Date
d = TimeSerial(1, 2, 3)
Debug.Print (d) ' 1:02:03
  • 目次
    • 文字列に変換する
    • 日付に変換する