3.VB(VBA)との微妙な違い
 プログラムを作るときには、ほぼ必ず変数を使いますが、VB(VBA)で作るときには変数の型、例えば文字列を保存する変数ならString、数値を入れる変数ならIntegerLongなどを指定します。

 このような型宣言は、VBScriptでは行いません。変数の型はVB(VBA)で言う所のVariant型(型式を問わず)と同じ扱いになります。じゃ、どの時点で型が決まるのか…ですが、変数に値を入れたときに決まります。数字を入れると数値型、文字を入れると文字列型、Set文を使うとオブジェクト型、のように勝手に判断します。

 と言っても、どの変数をどんな目的で使うか(文字列を入れる変数として使うのか、数値を入れる変数として使うのか)を、自分で押さえておかないと思わぬ所で落とし穴にハマリます。例えば、文字列が入っている変数に数値を加算しようとしても言うことを聞いてくれません。エラーというメッセージが出てあっさり拒否されてしまいます(汗)
変数名を付けるときのルールを決めよう
 プログラムを作るとき、変数が1つ2つで済むなら頭の中でどれに何を入れたらいいか覚えておけばいいし、後でプログラムを見たときもどれに何を入れたか、すぐに分かることでしょう。それと、1回ポッキリの使い捨てプログラムなら、そのときだけ分かれば問題ないでしょう。

 しかし、使う変数が1つや2つなんてことはマレだし、使い捨てじゃない場合も多いはず。変数にいい加減な名前を付けてしまい、後からプログラムを見たり直したりしたときに「この変数は何を入れているのだろう…」と、悩んで無駄な時間を費やすのもバカバカしいです。

 そんなわけで、次のようなルールで変数の名前を付けておくと便利です。

変数の型(使用目的)
ルールの例
変数名の例
文字列型として使う変数
変数名の先頭にstr(stringの略)を付ける。
strNamae
数値型で整数のみ扱う変数
変数名の先頭にnum(numberの略)を付ける。
numMaxSpeed
数値型で小数も扱う変数
変数名の先頭にflt(floatの略)を付ける。
fltMinSpeed
日付を扱う変数のとき
変数名の先頭にdte(dateの略)を付ける。
dteKinenbi
オブジェクトを扱う変数のとき
変数名の先頭にobj(objectの略)を付ける。
objExcelObject
 ※参考例です

 なお、こういった変数の命名ルールは、VBScriptじゃなくても(AccessやExcel、VB、さらに他の言語のときでも)、各言語などに適した内容で作っておくと超便利です。
変数名を付けるときのルール(番外編)
 昔々からの文化というか、定石というか…なぜか、for文などのループ命令でのカウント用の変数にiだのjの名前で変数を使います。

 上のルール付けに従うとnumInumJと付けるべきだと思うかもしれませんが、昔からの文化なのでfor文などのループ命令で使う変数のみ特例とし「i〜nの範囲のアルファベット1文字の変数名を付ける」というルールにしておけば良いでしょう。

 ちなみに、なぜfor文などのループ命令のときだけiだのjを使うかという点ですが、これは昔々のコンピュータの話になります。昔々のコンピュータはメモリーも処理能力も今時のパソコンとは比べ物にならないほど低くて、小数を扱うと処理がとたんに遅くなりました。

 もちろん、整数だけを扱った方が処理も多少速いしメモリーの消費量も小さくて済みます。しかし、その当時のBASIC言語には変数の型宣言というものが無かったので、その代わりに最初からi〜nのアルファベット1文字の変数は整数しか扱えない型となっていたのです。それを、整数しか使わないループ命令のカウント用には、ほとんどお約束のように使っていました。実は、その名残だったりします。
Copyright(C) 1999-2006 結城圭介。 All rights reserved