要素の最大インデックスに-1を指定して配列を宣言すると、その配列の長さはゼロになります。-2など、-1より小さな値を指定するとコンパイルエラーになります。
Dimで長さゼロの配列を宣言することはできません。長さゼロの配列はReDimを用いて宣言する必要があります。
長さゼロの配列に対してLBound関数は0を返し、UBound関数は-1を返します。配列の長さは"最大インデックス - 最小インデックス + 1"という式で求めることができます。この式に先の値を当てはめると、"0"が得られます。
次のコードでこれまでの説明を検証できます。
Option Explicit Main Sub Main ReDim ZeroLength(-1) Dim Lines(3) Lines(0) = "Min index: " & LBound(ZeroLength) Lines(1) = "Max index: " & UBound(ZeroLength) Lines(2) = "Length: " & (UBound(ZeroLength) - LBound(ZeroLength) + 1) MsgBox Join(Lines, vbNewLine) End Sub