VBA超入門シリーズ:その4 ~変数~

変数の続きです。

詳しく見ていきましょう。

 

データ型

変数にはデータ型という仕組みがあります。

前回は数字の「100」を格納しましたが、数値の「100」の場合があれば文字列の「100」の場合もあります。
じゃぁどうすればいいのか。。。ってことでデータ型を使って指定していきます。

 

VBAで使われるデータ型

データ型 VBAの表記 データ型の対象または数値範囲
文字列型 String 任意の長さの文字列
ブール型 Boolean True または False
バイト型 Byte 0 ~ 255の整数
整数型 Integer -32,768 ~ 32,767の整数
長整数型 Long -2,147,483,648 ~ 2,147,483,647の整数
通貨型 Currency -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807の固定小数点数
単精度浮動小数点数型 Single -3.402823E38 ~ -1.401298E-45、1.401298E-45 ~ 3.402823E38
倍精度浮動小数点数型 Double -1.79769313486231E308 ~ -4.94065645841247E-324、4.94065645841247E-324 ~ 1.79769313486232E308
日付型 Date 西暦100年1月1日 ~ 西暦9999年12月31日 (日付と時刻)
オブジェクト型 Object オブジェクト
バリアント型 Variant すべてのデータ
ユーザー定義型 ユーザー定義の型

 

いや多いぞ??
全部は覚えていられないのでよく出てくるものだけにします。

 

長整数型(Long)と文字列型(String)がよく使われるようです。
長整数型(Long)と似たもので整数型(Integer)がありますが、長整数型に比べ -32,767 ~ 32,767 と範囲が狭いので大は小を兼ねるということで、長整数型で宣言すればよいそうです。

  • 整数を入れる変数 → 整数型(Integer) or 長整数型(Long)
  • 文字列を入れる変数 → 文字列型(String)

とりあえず、ほとんどのマクロがこれだけで十分(らしい)

変数に型を指定

前回は変数を宣言しただけで型の指定をしていません。

 

Dim 変数名

 

型を指定していない場合は、どのような型の値でも格納する事が出来ます。

この場合、値が格納された時にその格納された値の型が変数の型となります。

 

(え、じゃぁ型を指定する必要なくね…?)
とはいきませんでした。

 

変数に型を指定していない場合、予定と違った値を格納してしまうミスが発生しやすくなります。
用途に合わせて型を指定しましょう。

 

指定方法は以下の通りです。

 

Dim 変数名 as データ型

 

変数名の後に「as」を付け、その後にデータ型を指定します。

例えば次のようになります。

 

Dim name as String  '←nameを文字列型で指定
Dim old as Integer  '←oldを整数型で指定
Dim X as Long, Y as String  '←Xを長整数、Yを文字列

変数に指定した型と異なるデータ型の値を格納しようとするとエラーとなります。

 

やってみましょう

整数型(Integer)で指定した変数「X」に文字列「こんにちは」を格納してみます。

 

Sub テスト()
 Dim X as Integer

 X = “こんにちは”
End Sub

 

整数型の格納可能範囲は-32,768から32,767の整数なので文字は格納できないのでエラーになります。

 

ちゃんと格納できるように修正します。
ついでに「A1」に記述してもらいましょう。

 

Sub テスト()
 Dim X As String

 X = "こんにちは"

 Range("A1").Value = X
End Sub

 

 

実行

 

 

変数に型を指定することによって、このように変数が予期せぬ使い方をされることを防ぎます。
面倒ですが指定しましょう。。。

 

「VBA超入門シリーズ:その6 ~変数の型~」に続く