VBAのデータ型と変数のデータ型の指定

VBA であつかう値にはデータ型が定義されています。例えば整数は Integer 型で文字列は String 型となっています。 VBA で変数を宣言する場合、その変数でどんなデータ型の値を格納するのかを合わせて指定します。ここでは Excel VBA で使用できるデータ型と変数でデータ型を指定して宣言する方法について解説します。

(Last modified: )

VBAで利用できるデータ型の種類

VBA で利用できるデータ型には次のようなものがあります。

データ型VBAでの表記値の範囲
文字列型String文字列
ブール型BooleanTrue または False
バイト型Byte0から255の正の整数
整数型Integer-32,768から32,767の整数
長整数型Long-2,147,483,648から2,147,483,647の整数
単精度浮動小数点型Single-3.402823E38から-1.401298E-45
1.401298E-45から3.402823E38
倍精度浮動小数点型Double-1.79769313486231E308から-4.94065645841247E-324
4.94065645841247E-324から1.79769313486232E308
通貨型Currency-922,337,203,685,477.5808から922,337,203,685,477.5807
日付型Date西暦100年1月1日から西暦9999年12月31日 (日付と時刻)
オブジェクト型Objectオブジェクト参照するデータ型
バリアント型Variantあらゆる種類の値を保存できる型
ユーザー定義型--ユーザー定義の型

データ型には文字列、数値、日付、ブール、オブジェクト、の 5 種類が用意されています。また数値は扱う数値の範囲や整数かそうでないかによっていくつかの種類が用意されています。

バリアント型はすべての値やオブジェクトを代入することができます。またユーザー定義型は少し特別な型なので、別のページで詳しく解説します。

データ型毎の値の記述方法

データ型毎の値(リテラルともいいます)を記述する場合に、どのように記述するのかを確認します。

数値

数値については直接数値を記述します。例えば 103.14 などです。

Sub テスト()
    Dim x As Integer
    Dim y As Double

    x = 10
    y = 1234.567
End Sub

なお Double 型の変数に 1.0 のような数値を入力すると 1# のようにシャープ( # )が付いた値に変換されます。これは Double 型の値であることを表しています。

データ型毎の値の記述方法(1)

文字列

文字列についてはダブルクオーテーション(")で囲んで値を記述します。例えば "Hello" などです。

Sub テスト()
    Dim pref As String
    pref = "東京都"
End Sub

日付と時刻

日付と時刻については値をダブルクオーテーション(")で囲んで文字列として記述するか、またはシャープ(#)で囲んで値を記述します。例えば "2022/9/24"#3/11/1992# などです。

Dim d1 As Date
Dim d2 As Date
Dim t As Date

d1 = "2021年3月14日"
d2 = #3/14/2021#
t = "11:26:39 AM"

シャープ(#)で囲んで指定する場合は #月/日/年# の形式で入力してください。 #年/月/日# でも入力できますが、コードウィンドウで入力すると自動的に #月/日/年# の形式に変換されます。

データ型毎の値の記述方法(3)

ブール型

ブール型は「True」または「False」の値を取ります。

Dim b As Boolean
b = True

変数を宣言するときにデータ型を指定する

VBA では変数を宣言するときに、データ型を指定して宣言することができます。

Dim 変数名 As データ型

変数名のあとに As を記述し、そのあとにデータ型を指定してください。データ型には例えば IntegerString を指定します。

変数を宣言するときにデータ型を指定した場合、変数に指定したデータ型以外の値を変数に代入するとエラーとなります。

次の例を見てください。

Sub テスト()
    Dim old As Integer
    Dim name As String
End Sub

変数 old のデータ型は Integer 型なので整数の値を代入できます。また変数 name のデー型は String 型なので文字列の値を代入できます。

Sub テスト()
    Dim old As Integer
    Dim name As String

    old = 24
    name = "山田太郎"
End Sub

もし変数 old に整数ではない文字列の値を代入すると、プログラムの実行時に「型が一致しません」というエラーとなります。

Sub テスト()
    Dim old As Integer
    Dim name As String

    old = "東京都"
    name = "山田太郎"
End Sub

変数を宣言するときにデータ型を指定する(1)

このように変数にデータ型を指定することで、予期しない使われ方を防ぐことができます。

変数の宣言でデータ型を省略した場合

なお VBA では変数を宣言するときにデータ型を省略することもできます。

Dim 変数名

データ型を省略した場合は、データ型として Variant を指定しものとして扱われます。つまり次のように変数を宣言したものと同じです。

Dim 変数名 As Variant

Variant 型はあらゆる値やオブジェクトを代入することができます。そのため、データ型を省略して宣言した変数にはどんな値でも代入することができます。

-- --

Excel VBA におけるデータ型について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。