プログラム中では、ほぼ間違い無く変数を使うことになる。変数というものは、エクセルのセルのように、値を保存しておくための箱のようなものである。変数は適当な名称をつけられるが、いわゆる「予約語」は使えない。型を明示的に定義(宣言)してから用いる方法と、定義せずに適当に(曖昧に)用いる方法がある。できるだけ変数は宣言してから使用するようにしたい。
変数の型は、下記表の通り、9種類が準備されている。主に使うものは、ループ時のカウンタとしての整数型、数値データをできるだけ精度高く扱うための倍精度浮動小数点数型、文字列を扱うための文字列型の3種類であろう。
型名 | 表現 | 用法・備考 |
---|---|---|
論理型 | Boolean | 1バイトの論理値。 TrueかFalseのいずれかの値を格納する。 |
整数型 | Integer | 2バイトの整数。 −32768〜32767。 |
長整数型 | Long | 4バイトの整数。 プラスマイナス約21億。 |
通貨型 | Currency | 8バイトの固定小数点。 小数点以下2桁で、プラスマイナス900兆の範囲。 |
単精度浮動小数点数型 | Single | 4バイトの浮動小数点。 有効数字は6桁程度。 |
倍精度浮動小数点数型 | Double | 8バイトの浮動小数点。 有効数字は14桁程度。 |
日付型 | Date | 年月日であらわされる日付。 |
文字列型 | String | 可変長または固定長の文字列。 |
バリアント型 | Variant | どの値でも格納可能である特殊型。 |
型宣言を行わなければ、変数は自動的にバリアント型となる。便利なようでもあるが、マッチング(データが一致するかの確認)を取るときには逆に不便となることがある。変数名のミスタイプを避けるためにも、全ての変数について型宣言が必要となるようにしておいた方が良い。このためには、プログラム記述の冒頭に「Option Explicit」と書いておく。全ての変数を宣言するのは一見面倒と思われるかもしれないが、プログラムの信頼性を確保するためにも効果があるので、是非癖をつけよう。
変数にはスコープというものがある。一つの変数がどの範囲まで共通で使えるかという意味である。プログラム記述の冒頭で宣言した変数は基本的にプログラム全体で有効である。サブルーチン内で宣言した変数はそのサブルーチンでしか使えない。共通の変数と使い捨ての変数とでも考えておけば良いだろう。慣れないうちは、全変数をプログラム冒頭で宣言し、すべて共通として扱うようにすれば良い。その場合の一般的な記述方法は下記のようになる。
Option Explicit Dim I,J As integer Dim S As String Sub Main() ............ End Sub |
変数の一種で重要な物として、配列変数があげられる。変数名に添字を付けて用いるものだ。セルの行・列番号のようなものと考えても良い。通常の(エクセルVBA以外での)プログラミングでは配列変数は非常に重要な物であり避けて通れない。エクセルにおいては、配列変数を使わずにセルを使うことができるため、適宜どちらでやっていくかを考えることになるだろう。配列を知らなくても、エクセルVBA使用においては、さして不便は無い。配列の宣言では、添字の範囲を指定する。通常添字は0から始まるが、とらわれずに使い易いように使えば良い。
Dim HAIRETSU(99) As Integer |
配列変数は使わなくても済ませられるが、セルデータをそのまま使うよりは処理が速くなる(筈だ)。セルデータを一旦配列変数に読み込み、処理後にセルに書き込む方法も意味がある。プログラムが終了した時点で全ての変数の値は失われるから、保存したい場合はセルに書き込むことを忘れないようにしよう。
変数の名称は前述のとおり、「予約語」と重複しなければ好き勝手につけて良い。ただし、仮名や漢字は止めておこう。自分でルールを考えておくことを奨める。一時的に使う変数は1文字にするとか、データの数を示すのであれば「Num_XXXX」にするとか。予約語との重複を避ける手としては、日本語をローマ字表記したものとするとか、アンダースコア「_」を入れておくとかすれば大抵は大丈夫だ。例えば「Number_of_Data」や「Row_Address」なんてのが可能。名前の長さ(文字数)は長すぎても面倒だから、20文字程度までに抑えておこう。