- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:dimを使わずにredimを使う場合)
dimを使わずにredimを使う場合の違いは?
このQ&Aのポイント
- VBAを使っていて、配列数を変数で定義したい場合、通常は`Dim`で配列を定義し、`Redim`でサイズを変更しますが、`Dim`を省略して直接`Redim`で配列を定義することも可能です。
- ただし、後者の方法は配列の値の型を指定することができません。つまり、`Redim aaa(xxx, yyy) as integer`のように明示的に型指定を行うことができないため、省略する場合は注意が必要です。
- また、後者の方法では配列の初期化も行えません。つまり、`Dim`の後に要素数を指定して初期化することができないため、初期化が必要な場合は`Dim`を使用する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ReDimのヘルプより メモ 宣言した変数がモジュール レベルまたはプロシージャ レベルにない場合、 ReDim ステートメントは宣言ステートメントと同様の働きをします。同じ名前を 持つほかの変数が後で作成されると、その変数の適用範囲 (スコープ) が広く、 Option Explicit ステートメントが指定されている場合でも、 ReDim ステートメントは後で作成された変数を参照し、コンパイル エラーは発生しません。 このような名前の競合を避けるには、ReDim ステートメントは宣言ステートメント として使わず、配列を再定義するためだけに使用します。 と、ありますので宣言なしでRedimはしない方がいいでしょうね。 バグの温床になりそうな気配です。