プログラム悪戦苦闘日記

はてなダイアリーからの移行(遺物)

グローバル変数てんこもり

 そろそろVBAネタも飽きてきたけど、これだけは書いておきたい。グローバル変数だ。VBAにおけるグローバル変数をは、Public な変数のことだが、これだけでなかったりする。現在アクティブになっているWorkbookなりWorksheetなりCellなんかも、グローバル変数で参照できる。
 これは、厳密に言うとグローバル変数とは違うとは思うが、いちようActiveWorksheetなんかでどこからでも参照できる変数、ということでグローバル変数の仲間としておく。よーは、使われるとやっかいな変数ということだ。
 このActiveなんとかがなぜやっかいか。それはActiveXの仲間だから、ではなく、どこのWorksheetなりCellなりを参照しているかが分からないからだ。更に言うと、現在アクティブになっているシートなりセルは、ユーザー入力によって変わってしまうかもしれないのでバグが発生しやすい、というのもある。だから、誰かが(間違えて)Excel VBAでなんかを作っているとき、「Activeなんとかは使うな」と言うようにしている。しかし、世の中にはラクするというかテ抜くやつが多いせいか、やっぱり使うんだよね… これと似たようなヤツにCopy関数ってのがあるけど、今回はこの話はしません。

 5回に渡ってVBAネタを書いたけど、やっぱりVBAは開発用言語ではないってことです。VBAはちょっとしたツール用で使うべきです。だから間違ってもVBAで開発、なんて提案しないようにしましょう。工数が下がる、なんてウソですから。