Dim i1,i2,i3,i4,i5 As Long
と宣言するとi1~i4はVariant型で宣言したことになります。面倒でも
Dim i1 As Long,i2 As Long,i3 As Long,i4 As Long,i5 As Long
と宣言します。
Dim i(1 to 5) As Long
ならiは配列変数になります。初期値はi(1)~i(5)は全部0になります。
なのでi(2)=0が正しいです。
ただ、慣習的にiはカウンタ変数として使うことが多いので紛らわしいかも、
Dim Ar(1 to 5) As Long
とか
Dim ary(1 to 5) As Long
のように別の文字にしたほうが分かりやすいです。