ここから本文です

VBAで変数を宣言した時の初期値について

ab_c1xyzさん

2011/8/2419:03:36

VBAで変数を宣言した時の初期値について

VBAで変数を宣言したら、そのときに初期値が入っていると思います。

Variant型であれば、Empty値
Integer型であれば、0
Long型であれば、0
String型であれば、""
Boolean型であれば、False

C言語とかだと、変数宣言後に変数に入っている値は不定なので、その変数を使用するときには必ず初期化をすることになるのですが、VBの場合だと、これが定まっているように思います。

初期化って、する必要はあるのでしょうか?
私は何となく、明示的に初期値を代入しておく場合が多いのです。
(String型の配列などを使用する場合、ときどき初期化せずに使う場合もあったりします。気まぐれ。)

初期化をした方がいいのでしょうか?

変数,初期化,C言語,初期値,String型,言語,VBA

閲覧数:
52,051
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

bxw02647さん

2011/8/2419:34:27

VBAの場合、変数が初期化されるのは仕様ですので、初期化しなくても問題なく使えますが、明示的に初期化しておいた方が他の人が読む場合にもいらぬ誤解を与える事がないので無難だと思います。
趣味で作っていて自分しか見ないという場合にも他の言語にリプレースするような機会があったとき、移行先の言語によっては変数が初期化されていなくてバグになる事もあります。
変数は初期化するクセを付けていた方がこの言語はこう、この言語は・・・とならなくて済むので後々楽だと思います。

質問した人からのコメント

2011/8/28 00:14:32

笑う rivoisuさん,bxw02647さん 回答ありがとうございました。
これまで通り、できるだけ初期化はして使うようにしたいと思います。

ベストアンサー以外の回答

1〜1件/1件中

rivoisuさん

2011/8/2514:23:41

私も以前は「初期化しないと宣言だけでは値が不定」という処理系のコードを書いていたためVBAも最初は値の初期化を律儀にやっていました。
しかし、変数が増えてきたり、Variantなんて変数を使ったり、構造体の配列、何かを使うときは面倒でしょうがないのでしないことのほうが多いですね。
特にココに回答を書くときなんか(^|^)
Booleanなんかは読みやすさのために明示的に初期化することはあります。

「VBAは初期化はSYSTEMがやってくれる」ということがわかっていればいいのじゃないかなと思うようにしています。

むしろVBAの場合は「変数の寿命」に気を使います。
ユーザーに制御が移った時点で変数の値は不定というのが仕様ですが、普通はPublicの場合値が保存されています。それで動いたと思っていたら、場合によって初期化されていることがある。
これはテストでも出ないことが多いのでバグの元になります。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

5文字以上入力してください

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。