2011-10-02 4 views
13

xavgのデフォルト値は何ですか宣言VBA変数/配列のデフォルト値

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

を考えてみましょうか

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

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

答えて

14

データ型を指定しても初期化子を指定しない場合、Visual Basicでは変数がデータ型の既定値に初期化されます。これは、すべての数値型が0(ゼロ)です。

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

Ref

+0

これが正しいことを確かめてください。ただし、動的配列を使用する場合、明示的に設定する前に要素を初期化してarr(0)を参照する必要はありません。 – dmogle

+1

さて、私はそれを.NETのものなので、Excel VBAの宣言でイニシャライザを指定することはできないことを(SOを検索して)確信しています。 Refをありがとう!それは、「x」がゼロであるという疑いを完全に解消する。固定配列内のすべての要素もゼロに初期化されていますが?私は実際には、宣言時に動的配列が初期化(割り当てのみ)されないことを既に知っていました。固定配列宣言が同じように動作しないことを確認したかっただけです。 –

+0

@Prashant、なぜ時計を変数に追加して自分でテストしてみませんか? – Reafidy

1

はい、数値型がVBAで0に初期化されるのは、その既定値であるためです。

しかし、あなたが心配して、開始値が重要な場合、私はあなたに明示的に値0を割り当てていることを覚えています(本当に必要はありません)。

4

あなたは混同可能性がある、あなたは何をやっているほど明白ではないので、すべき暗黙的に指定されたデータ型のデフォルト値に依存書き込みコードはできるが、それは常にあなたを意味するものではありませんあなたのコードを読んでいる次の人(そしてその人は今から1年後かもしれません)。

変数に初期値を明示的に割り当てることは間違いありません。 、それは少しより複雑配列のためだ。もちろん、

Dim x As Double: x = 0 

が、通常はあなたのコードにさらに下にそれらを初期化するために便利な場所があります:あなたがしたい場合は、宣言と同じ行にそれを行うことができますあなたはとにかくそれらを横断しています。