VBAで配列を宣言する際、次のような2つの記述をよく目にします。
Dim scores(1 To 5) As Integer
Dim scores(5) As Integer
一見似たように見えるこの2つの宣言ですが、実は添え字の開始位置や要素数に違いがあります。
この記事では、その違いについて分かりやすく解説します。
1. Dim scores(1 To 5) の意味
この書き方は、添え字が 1 から始まる5個の要素を持つ配列を定義します。
Dim scores(1 To 5) As Integer
この場合、使用できるインデックスは以下の通りです。
scores(1)
scores(2)
scores(3)
scores(4)
scores(5)
- 最小インデックス:1
- 最大インデックス:5
- 要素数:5個
2. Dim scores(5) の意味
こちらは、インデックスの範囲を明示していない書き方です。
Dim scores(5) As Integer
この場合の配列は、添え字が 0 から 5 までの6個の要素を持つ配列として扱われます。
scores(0)
scores(1)
scores(2)
scores(3)
scores(4)
scores(5)
- 最小インデックス:0
- 最大インデックス:5
- 要素数:6個
3. 違いの比較
宣言方法 | 添え字の範囲 | 要素数 |
---|---|---|
Dim scores(1 To 5) | 1 ~ 5 | 5個 |
Dim scores(5) | 0 ~ 5 | 6個 |
4. 実務上の注意点
- 配列の範囲を明確にするために、
1 To 5
のように範囲を明示する書き方がおすすめです。 Dim scores(5)
のように省略すると、0から始まることに気付かず、バグの原因になることがあります。- チーム開発や保守性を意識する場合も、添え字の開始と終了を明示する方が安全です。
5. まとめ
配列の添え字は、宣言の仕方ひとつで大きく挙動が変わります。
とくに Dim scores(5)
と書いたときは、**「0から始まって6個ある」**という仕様をしっかり理解しておくことが大切です。
安全で分かりやすいコードを書くためにも、インデックスの範囲は明示的に指定することを習慣にしましょう。
コメント