web-dev-qa-db-ja.com

VBA変数/アレイのデフォルト値

宣言を検討する

Dim x As Double
Dim avg(1 To 10) As Double

xavgのデフォルト値は何ですか?

テストを通じて、xはゼロに初期化されていると言いたいです。同様に、avgのすべての要素がゼロに初期化されたと言いたいです。

しかし、これに依存するコードを書くことはできますか?または、デフォルトの初期化値は実際には不確定ですか?

17
Prashant Kumar

データ型を指定しても初期化子を指定しない場合、Visual Basicは変数をそのデータ型のデフォルト値(すべての数値型で0(ゼロ))に初期化します。

マクロを実行すると、すべての変数が値に初期化されます。数値変数はゼロに初期化され、可変長文字列はゼロ長文字列( "")に初期化され、固定長文字列はASCIIコード0で埋められます。バリアント変数はEmptyに初期化されます。Empty変数は、数値コンテキストではゼロで表され、文字列コンテキストでは長さゼロの文字列( "")で表されます。

参照

20
Mitch Wheat

あなたcan与えられたデータ型のデフォルト値に暗黙的に依存するコードを書くが、それはあなたが常にshouldであるという意味ではない。あなたのコードを読んでいる次の人を混乱させるかもしれません(そしてその人は今から1年後にあなたかもしれません)。

変数に初期値を明示的に割り当てることは間違いありません。必要に応じて、宣言と同じ行でそれを行うことができます。

Dim x As Double: x = 0

もちろん、配列にはもう少し複雑ですが、通常は、コードのさらに下の方で配列を初期化するのに便利な場所があり、とにかく配列をトラバースします。

はい、VBAで0に初期化される数値タイプはデフォルト値であるため、これに依存できるはずです。

ただし、心配になり、開始値が非常に重要である場合は、値0を明示的に割り当てることをお勧めします(実際には必要ありませんが)。

2
aevanko