2017-01-23 6 views
0

Я пытаюсь создать свой собственный тип данных, который должен содержать массив и длинный тип данных; Я определил его как общественного типа:поведение пользовательского типа (UDT) в VBA 6.0

Public Type MyData 
Cluster() As Variant 
Centroid As Long 
End Type 

И я создал подводную лодку, чтобы использовать его:

Sub Mycluster() 
Dim Cong As MyData 
Dim i As Long 
i = 1 
ReDim Cong.Cluster(i) 
For i = 1 To 10 
Cong.Cluster(i) = Rnd() * 9 + 1 
    ReDim Preserve Cong.Cluster(i) 
Next i 
    Cong.Centroid = Application.Average(Cong.Cluster) 
    Debug.Print Cong.Centroid 
End Sub 

но когда debbuging ПОЛУЧИТЬ эту ошибку:

enter image description here

Некоторые помогают ?

Заранее благодарен!

ответ

1

Вы краснеете, пытаясь добавить больше элементов, отсюда и ошибка. Но так как вы знаете размер заранее, не думайте, что вам нужно это делать вообще.

Sub Mycluster() 

Dim Cong As MyData 
Dim i As Long 

ReDim Cong.Cluster(1 To 10) 

For i = 1 To 10 
    Cong.Cluster(i) = Rnd() * 9 + 1 
    'ReDim Preserve Cong.Cluster(i) 
Next i 

Cong.Centroid = Application.Average(Cong.Cluster) 

Debug.Print Cong.Centroid 

End Sub