EXCEL VBA - 変数とデータ型

変数

変数とは、プログラム内で使用する値を一時的に格納しておく箱のようなものです。変数を利用するために、まずは以下のように変数の宣言を行います。

Dim 変数名
変数の宣言

変数名は、英数字、漢字、アンダーバーが利用できます。ただし、先頭の文字はアルファベットや漢字などの文字でなければなりません。

' OK
Dim 変数123
Dim val
Dim abc_def

' NG
Dim 123変数
Dim mail@gmai.com
Dim abc def
変数の宣言

また、変数はまとめて宣言することもできます。まとめて宣言するためには、変数名を , で区切って記述します。

Dim a, b, c
変数をまとめて宣言する

変数に値を格納するためには、以下のように記述します。以下の例では変数 num10 を格納しています。

Dim num
num = 10
変数に値を格納する

データ型

プログラムで値を扱う場合、値はデータ型と呼ばれるタイプに分類されます。例えば、整数型、文字列型、日付型などです。VBA では、以下のデータ型があります。

データ型
データ型表記値の範囲
文字列型Stringすべての文字列
Bool 型BooleanTrue または False
Byte 型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 あらゆる種類の値を保存できる型
ユーザ定義型任意 ユーザが自由に定義できる型

変数には型を指定することができます。変数に型を指定する場合は、以下のように変数名の後に As を付けて指定します。型を省略した場合は、バリアント型となります。

Dim num As Integer
変数の型を指定する

変数の型と異なる値を格納しようとした場合、「型が一致しません。」というエラーが表示されます。例えば、以下のサンプルコードでは整数型に文字列型を代入しようとしているため、エラーが発生します。

Dim num As Integer

num = "abc" ' 型が一致しない
型が一致しないエラーが発生する例
Hint!

上記の例を見ると、変数にはデータ型を指定しない方がどのような種類の値も保存できるバリアント型になるため使い勝手が良いように見えます。しかし、データ型を指定しなければ、その変数にどのようなタイプのデータが入っているのか予測しにくいため、エラーの原因となります。そのため、変数には可能な限りデータ型を指定した方がエラーが少なくなります。

数値型

数値型にはバイト型、整数型、長整数型、単精度浮動小数点型、倍精度浮動小数点型があります。バイト型、整数型、長整数型は整数、単精度浮動小数点型、倍精度浮動小数点型は実数を表すのに使います。

整数型には3つの型がありますが、格納する値の大きさによって、使用するデータ型を選択します。

Dim i As Integer ' もっとも基本的なデータ型
Dim b As Byte ' 0 ~ 255 までの範囲に収める場合のデータ型
Dim l As Long ' より大きな整数を扱う場合のデータ型
バイト型、整数型、長整数型

Currency 型も数値を扱います。極めて大きい数値を小数点を含めて正確に扱う場合には Currency 型を使います。Currency 型は、お金の計算など大きな値を正確に計算が必要とされる場合に用いられます。

Dim c As Currency
バイト型、整数型、長整数型

プログラムで極めて大きい数値を計算する場合、有限桁数で表す場合があります。その際、丸め誤差を含む非常に近い大きさの小数同士で減算を行ったときに有効数字が減ってしまう桁落ちという現象が発生します。Currency 型は、そのような誤差を許さない厳密な計算を行うときに使用されます。

文字列型

文字列型には文字を格納します。文字を記述する場合には文字を " で囲って記述します。

Dim str As String

str = "abc"
文字列型

数値を文字列型に格納することもできます。数値を格納する場合、" で囲む必要はありません。

Dim str As String

str = 123
文字列型

ただし、上記の例では文字列であるか数値であるか判断しにくいため、文字列型に数値を入れるべきではありません。文字列型には、明確に文字列のみを扱うべきです。

Dim str As String

str = "123"
文字列型

日付型

日付型には日付と時刻の値を格納します。値の指定方法は、日付のフォーマット文字列を指定するか、# で囲んだ形で日付のフォーマット文字列を指定します。

Dim date As Date

date = "2022年4月16日"
date = #2022/4/16#
date = #4/16/2022#
date = #12:34:56 PM#
文字列型

ブーリアン型

ブーリアン型は True または False のいずれかの値を取るデータ型です。ブーリアン型は、何かを比較した後で判定する際に取られる値です。例えば、数字の大小関係や、文字列の一致・不一致などです。

バリアント型

バリアント型はすべてのデータ型の値を格納することができるデータ型です。汎用的に使用できるため便利に感じるかもしれませんが、必要とするメモリも大きいため、特に理由がない限りは避けた方が良いでしょう。

0
SHARE
Twitter
@murashun
お問い合わせ
murashun@gmail.com
ご質問(マシュマロ)
https://marshmallow-qa.com/murashun
ご支援(Stripe)
https://checkout.stripe.com/