なんで左右の時だけ To が付くの?
間違えたじゃん。
クイズです。
下記配列の宣言について、正しい説明はどれでしょう?

Dim A(10) As String

①添字の最小値は0、要素数は10
②添字の最小値は0、要素数は11
③添字の最小値は1、要素数は10
④添字の最小値は1、要素数は11

答えなんぞ教えてやらん!自分で調べよ。
ちっくしょーーーー
今まで①だと思ってたよ。

配列の宣言で
Dim A(1000000000000000) As String
とでも書いておけばOKか?との疑問は私も持ちました。NGとまでは言いませんが、薦めません。

配列の使用例
Sub Test2()
Dim A(1001) As String, i As Long
For i=0 To UBund(A)
Cells(i,1)=A(i)  '何らかの処理
Next i
End sub
配列の最後の添え字を取得するためにUboundを使う事はよくあります。Uboundは配列の大きさの最大の添え字を取得するもので、上の例ではUbound(A)=1000です。ここで宣言に余裕を持たせてA(10000000001)などと書くと、For NextのループでUbound(A)=1000000000となるので、時間がかかってしまいます。配列の大きさは実際の大きさと同じであって欲しい。

「Uboundなど使わず、実際の大きさを調べればいいじゃん!」と思う人も居るでしょう。そのためにわざわざ変数を1個用意せねばなりません。配列と大きさを常にセットで扱う必要があります。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

長々と「配列の大きさ=実際の大きさ」を推奨するというか正当化するというか、ウダウダ書きましたが、
この処理方法が分からず長いことA(100000000000)を使って来ました。これを解決するのがReDimです。

Sub Test3()
    Dim A(0) As String, i As Long
    LastRow=Cells(Rows.Count, 1).End(xlup).Row
    ReDim A(LastRow)
    For i=1 To LastRow
       A(i)= '何らかの処理
    Next i
End sub

Test3で配列Aの中身と大きさを決定し、Test2で実際にAを使って処理します。

今回の失敗
そーかそーか、俺って頭いい、と思ってたら、ReDimでググると結構ありましたね(笑)