Вам необходимо установить размер массива, прежде чем вы сможете его изменить:
Dim PegSubTot ' declare as variable
for i = 1 to end ' presuming end is set somewhere?
If value found then
If IsArray(PegSubTot) Then ' check if it's an array
ReDim Preserve PegSubTot(Ubound(PegSubTot) + 1) ' If it is, extend array by 1
Else
ReDim PegSubTot(0) ' If it's not redim as a one element array
End If
PegSubTot(UBound(PegSubTot)) = value ' Set highest element of array to value
end if
next
При первом обходе переменная не является массивом, поэтому она устанавливается в массив из одного элемента (вы нене нужно сохранять, так как это первое найденное значение).В каждом последующем цикле он является массивом и поэтому каждый раз расширяется на один элемент, а значение всегда помещается в элемент ubound
массива.
Дайте мне знать, если это требует дальнейшего разъяснения.