宣言を検討する
Dim x As Double
Dim avg(1 To 10) As Double
x
とavg
のデフォルト値は何ですか?
テストを通じて、x
はゼロに初期化されていると言いたいです。同様に、avg
のすべての要素がゼロに初期化されたと言いたいです。
しかし、これに依存するコードを書くことはできますか?または、デフォルトの初期化値は実際には不確定ですか?
データ型を指定しても初期化子を指定しない場合、Visual Basicは変数をそのデータ型のデフォルト値(すべての数値型で0(ゼロ))に初期化します。
マクロを実行すると、すべての変数が値に初期化されます。数値変数はゼロに初期化され、可変長文字列はゼロ長文字列( "")に初期化され、固定長文字列はASCIIコード0で埋められます。バリアント変数はEmptyに初期化されます。Empty変数は、数値コンテキストではゼロで表され、文字列コンテキストでは長さゼロの文字列( "")で表されます。
参照 。
あなたcan与えられたデータ型のデフォルト値に暗黙的に依存するコードを書くが、それはあなたが常にshouldであるという意味ではない。あなたのコードを読んでいる次の人を混乱させるかもしれません(そしてその人は今から1年後にあなたかもしれません)。
変数に初期値を明示的に割り当てることは間違いありません。必要に応じて、宣言と同じ行でそれを行うことができます。
Dim x As Double: x = 0
もちろん、配列にはもう少し複雑ですが、通常は、コードのさらに下の方で配列を初期化するのに便利な場所があり、とにかく配列をトラバースします。
はい、VBAで0に初期化される数値タイプはデフォルト値であるため、これに依存できるはずです。
ただし、心配になり、開始値が非常に重要である場合は、値0を明示的に割り当てることをお勧めします(実際には必要ありませんが)。