【VBA】変数の使い方・宣言方法【Excelマクロ】

ExcelのVBA(マクロ)で、変数の使い方や宣言方法についてまとめました。

【変数とは】使い方

変数とは、値(数値、文字列など)を格納する入れ物です。
変数を使用するには、以下のように変数を宣言し、値を変数に代入します。

Dim 変数名

変数名 = 値 

変数宣言には「Dim」を使用します。
変数に値を格納するには「=」を使用します。

動画解説

本ページの内容は以下動画でも解説しています。

サンプルコード

サンプルプログラムのソースコードです。

Sub test()

    ' 変数xとyを宣言
    Dim x
    Dim y

    ' 変数xに数値を代入
    x = 100

    ' 変数xに文字列を代入
    y = "百"

    ' 変数xの値をメッセージボックスに表示
    MsgBox x

  ' 変数yの値をメッセージボックスに表示
    MsgBox y

End Sub

「y = “百”」ように、値を数値でなく「文字列」として扱うときはダブルクォーテーション(””)でくくってやります。

次の節では、宣言時にデータ型を指定する方法を解説しますが、本節のように「Dim 変数名」とだけ記述して宣言した場合は、変数はバリアント型(Variant)となります。
バリアント型(Variant)の変数は、数値、文字列など、どんなデータでも入れることができる万能な型です。
ただし、バグを招く原因になったりすることもあるので、面倒くさいですがデータ型もあらかじめ指定したほうが安心ではあります。

【データ型】種類・型宣言文字

VBAでは、以下のデータ型があります。

型名 種類(byte数) 型宣言文字 値の範囲
Integer 整数型(2) % -32,768~32,767
Long 長整数型(4) & -2,147,483,648~2,147,483,647
Single 単精度浮動小数点数型(4) ! -3.402823E38~-1.401298E-45(負の数)
1.401298E-45~3.402823E38(正の数)
Double 倍精度浮動小数点数型(8) # -1.7976931348623E308~-4.94065645841247E-324(負の数)
4.94065645841247E-324~1.79769313486232E308(正の数)
Object オブジェクト型(4) オブジェクトの参照アドレス
String 文字列型(10+文字列の長さ) $ 0~2GB
Byte バイト型(1) 0~255
Boolean ブール型(2) True(真) or False(偽)
Variant バリアント型(16) 倍精度浮動小数点数型と同じ
Variant バリアント型(22+文字列の長さ) 文字列型(可変長)と同じ
Date 日付型(8) 西暦100年1月1日~西暦9999年12月31日
Currency 通貨型(8) @ -922,337,203,685,477.5808~922,337,203,685,477.5807

動画解説

本ページの内容は以下動画でも解説しています。

型宣言文字

型宣言文字は、データ型を示す文字です。
「変数」「定数」「関数名」の後ろに付けることで型宣言を省略できます。
ただし、バグの元になりやすいのであまり利用しません。

' 整数型(Integer)の変数xを宣言します。
Dim x% 

型宣言

通常は、以下のように変数の型宣言を行います。

Dim 変数名 As 型名 

利用例

Sub test()
    ' 変数xをLong型で宣言
    Dim x As Long

    ' 10÷4の結果をxに代入
    x = 10 / 4
    
    ' xの値をメッセージボックスに表示(2と表示される)
    MsgBox x
End Sub 

長整数型(Long)型は整数しか格納できないため、10÷4は2.5ですが、xには整数部分の2のみ格納されてしまいます。
小数点以下の数値を扱う場合は、次のようにSingleかDoubleを使う必要があります。

Sub test()
    ' 変数xをSingle型で宣言
    Dim x As Single

    ' 10÷4の結果をxに代入
    x = 10 / 4
    
    ' xの値をメッセージボックスに表示(2.5と表示される)
    MsgBox x
End Sub 
【VBA】データ型の種類・型宣言文字【Excelマクロ】
ExcelのVBA(マクロ)のデータ型の種類・型宣言文字についてまとめました。
【VBA入門】Excelマクロで仕事・作業を自動化
VBA入(Excelマクロ)で様々な処理を自動化する方法をサンプルコード付きで入門者向けにまとめました。
Excel/VBA
西住工房

コメント

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