VBA 6.0中的用户定义类型(UDT)行为

时间:2017-01-23 20:05:21

标签: arrays excel-vba cluster-analysis vba excel

我正在试图创建我自己的数据类型,它应该包含一个数组和一个长数据类型;我已将其定义为公共类型:

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 个答案:

答案 0 :(得分: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