Excel VBAの【変数】で利用できる「データ型」一覧

Excel VBA Tips集-5

Excel VBAの変数で使えるデータ型一覧表

変数とデータ型とは何か

変数は値やオブジェクトをしまっておくのようなものです。ギターを箱にしまうにはギターケースが必要ですよね。また、ハチミツを筆箱にしまうわけにはいきません。ハチミツならばビンにしまうべきでしょう。このように、箱に入れるものの性質によって、箱の種類を変えなければなりませんよね。

ここで言う、箱の種類のことを変数の世界ではデータ型と呼びます。

Excel VBAにおける変数も同じです。一口に変数といっても、そこに、なんでもしまえるわけではありません。ギターやハチミツに適切な箱があるように、変数に格納する値の種類によって、適切なデータ型の変数を選ばなくてはなりません

例えるならば、ギターを格納する変数であればギターケース型の変数でなければいけませんし、本を格納する変数であれば本棚型の変数でなければいけません。もちろんExcel VBAの世界にはギターケース型や本棚型の変数は存在しませんが、かわりに整数を格納するのであれば、
Integer型(いんてじゃーがた)の変数を利用し、文字列を格納する変数であれば、
String型(すとりんぐがた)の変数を利用します。

このInteger型String型のことを変数のデータ型と呼びます。例えるならば、変数という箱の性質を表すのがデータ型です。箱の性質によって、その変数に入れられるモノが決まるというわけです。

そしてExcel VBAにおける変数のデータ型は、先ほどご紹介したInteger型String型も含めて、全部で11種類あります。

以下に11種類のデータ型の一覧表を掲載します。

VBAのデータ型一覧表

データ型名 表記 読み 意味 格納できる
値の例
バイト型  Byte  ばいと  0~255の整数を格納できる。  10
ブール型  Boolean  ぶーりあん  TrueまたはFalseのいづれか一方を格納する。  True
整数型  Integer いんてじゃー   -32765~32767の整数を格納できる。  -50
長整数型  Long  ろんぐ  Integerよりも大きな整数を格納するときに使う。  20000
通貨型 Currency   かれんしー  小数点を含む数値を格納できる。  70.123
単精度浮動小数点型 Single   しんぐる  小数点を含む数値を格納できる。Currency型とは格納できる小数点の幅が異なる。  3.14
倍精度浮動小数点型  Double  だぶる  Singleよりも桁の大きな小数点を格納できる。  1.08
日付型  Date  でいと  日付・時刻を格納できる。  “2017/3/3”
文字列型 String   すとりんぐ  文字列を格納できる。  “ラーメン”
オブジェクト型 Object
※1
 おぶじぇくと  オブジェクトへの参照を格納する。  Range(“A1”)
バリアント型  Variant
※2
 ばりあんと  あらゆる種類の値を格納できる万能データ型。  なんでも

※1Object型についての補足

変数名とデータ型を決めて、ある変数を使える状態にすることを「変数を宣言する」と言います。変数の宣言は、「Dim 変数名 As データ型」という書式で行います。例えばInteger型の変数を宣言するには、Dim intNum As Integerのように書きます。

ですが、Object型には注意して下さい。Dim obj As Objectという風にObject型の変数を宣言することは一応できますが、普通はDim obj As Objectという書き方は避けるようにします。なぜかというと、Object型という指定の仕方では範囲が広すぎて思わぬバグの原因になりかねないからです。

例えるならば、今仮に食べ物型というデータ型があるとしましょう。
Dim food As 食べ物」という風にザックリ「食べ物」と宣言してしまうと、食べ物型の変数foodの中身になんでもかんでも入れることができてしまいます。お汁粉、スパゲッティ、ステーキ、ショートケーキ、お好み焼きetc…。このようになんでも入れることができてしまうデータ型というのはエラーやバグの原因になりやすく、とても危険なんです

なので、Object型の変数を使うときはObjectという「なんでもOKなデータ型」ではなく、例えばRangeオブジェクトを格納する変数にしたいのであれば、Dim r As Range等と具体的なオブジェクト名を使って、Object型の変数を宣言するようにしましょう。少しややこしいかもしれませんが、Object型の変数は、Dim r As Objectと書くこともできれば、Dim r As Range等と具体的なオブジェクト名を使ってデータ型を指定することもできるのです。

《まとめ》

Object型の変数を宣言するときは、どんなオブジェクトでも入れることができる「Object」を使わずに極力、RangeWorksheetといった具体的なオブジェクト名を使って
オブジェクト変数を宣言しよう!!

※2バリアント型についての補足で

結論から言うとバリアント型の変数は使用禁止です。理由はバリアント型の変数には、なんでもかんでも好きなモノを入れることができるからです。なんでも入れることができてしまうデータ型というのはエラーやバグの原因になりやすく、とても危険なのです!

バリアント型の変数は一見便利なように見えます。しかし、うっかりバリアント型を愛用してしまうと「いつバグるか分からない時限爆弾のようなVBAプログラム」を書くことになってしまいます。

なので、バリアント型は封印してしまいましょう!!

関連項目

 

使える!正引きExcel VBA Tips集TOPに戻る

 

使える!逆引きExcel VBA Tips集TOPに戻る

 

[AD]自分のペースでゆったり学ぶ Excel VBA

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA