変数の宣言、データ型

変数を宣言する

変数とはデータを格納する入れ物です。学校の数学でやったXやYと同じです。VBAは、変数を使用する前にあらかじめ宣言しておかなくても、自動で認識されて処理されます。 便利ではありますが、コードのミスが分からないなどの原因となるので、事前に宣言しておく(明示的な宣言)ことが懸命です。
事前に宣言するメリットには以下のようなことがあります。
・メモリー空間の節約
・エラーの回避
・コードの実行速度の向上

変数宣言の構文
 Dim 変数名 As データ型

使用例

Dim MyName As String変数名Mynameを文字列型として宣言
Dim MyAge As Integer変数名MyAgeを整数型として宣言
Dim MyName As String, MyAge As Integer1行で複数の宣言が可能
注)同じデータ型を1行に書こうとして
  Dim MyName, MyAddress As Integerとするのはだめです。


変数の宣言、データ型を強制的にする

VBAでは、変数を宣言しなくても自動で認識されますが、このため、コードの中で新しい変数が出てきたとき、それは本当に新しい変数なのか、あるいは入力ミスによるものなのかVBAでは 分かりません。このため、期待した結果が出ないとか、エラーとなるなどの問題が発生します。この問題を避けるために、明示的に宣言されていない変数が現れた時にエラーを表示させるように設定することができます。

方法としては、モジュールの先頭に
Option Explicit とステートメントを記述します。
もし、宣言していない変数を記述して、マクロを実行すると、下図のようなエラーが表示されます。
エラーの図

新規にモジュールを作成したときに、自動的にOption Explicitを挿入するようにするには、
「ツール」「オプション」から「変数の宣言を強制する」にチェックを入れます。
オプション設定の図


データ型の例(一部)

データ型意味値の範囲
Booleanブール型TrueまたはFalse
Integer整数型-32,768~32,767
Long長整数型-2,147,483,648~2,147,483,647
Single単精度浮動小数点型正の値で1.401289E-45~3.402823E38,負の場合は省略
Double倍精度浮動小数点型省略
String文字列型0~65535バイト
Variantバリアント型要素に依存。あらゆる型になる。
*いろいろなデータ型があるので、使用する変数は何のデータ型が適切か考えて使用する必要があります。例えば1万までの整数を使用するときに、倍精度を使用しても余計なメモリーを使用するだけで意味がありません。
*文字列のバイト数ですが、一般に半角の文字は1文字あたり1バイト、全角文字は2バイト使用します。
*3.402823E38のE38は10の38乗を意味します。
*値の範囲は2007の場合です。Revisionによっては変わっているかもしれませんので、詳しく知りたいときはHelpを参照してください。

昔は、有効桁が4桁くらいしかなく、単精度にするか、倍精度にするか迷った記憶があります。今見ると、隔世の感がありますねえ。そういえば、学校に紙テープにプログラムを打ち込むHITAC-10というのがありました。 紙テープとは、ウルトラマンで出てくるようなやつで、幅が2~3cmの長いテープに打ち出された穴の列を見て「あ!これは?」とか言っているやつです。今なら博物館ものですな。授業で使ったコンピュータは、パンチカード式のもので、カード1枚にプログラムの1行を打ち込んで穴を開けるという ものでした。打ち損じるとカード1枚が無駄になるわけで、お金がかかって困ったものでした。


Excel VBAのチップス一覧へ戻る

ツイート
このエントリーをはてなブックマークに追加
inserted by FC2 system