我正在生成一些随机的gcard人群,编号从1到pmax
问题是收集“persone”总是一样的...... gruppi(i)为每个“i”引用相同的“persone”
我希望每个“gruppi(i)”里面都有一个新的收藏品 我怎么能这样做?
Dim gruppi As New Collection
Dim persone As New Collection
gmax = -Int(-(pmax / gcard))
conta = 1
For g = 1 To gmax
gruppi.Add persone
'ciclo sulle persone del gruppo
For p = 1 To gcard
cas = Round(Rnd() * (pmax - 1) + 1, 0)
riprova:
'check if cas was generated before
For i = 1 To gruppi.Count
For j = 1 To gruppi(i).Count
If gruppi(i)(j) = cas Then
cas = Round(Rnd() * (pmax - 1) + 1, 0)
GoTo riprova
End If
Next
Next
continua:
'person "cas" not present, ok let's add it!
gruppi(g).Add cas
'MsgBox "gruppi -> " & gruppi.Count
'MsgBox "persone nel gruppo " & g & " -> " & gruppi(g).Count
conta = conta + 1
If conta > pmax Then GoTo esci
Next p
Next g
esci:
答案 0 :(得分:0)
因为
Dim gruppi As New Collection
Dim persone As New Collection
For g = 1 To gmax
gruppi.Add persone
....
您可以为您添加的每个persone
项目引用相同的gruppi
对象...
然后你要使用:
Dim gruppi As New Collection
For g = 1 To gmax
gruppi.Add New Collection ' add a new collection as the new item of 'gruppi' collection
....
顺便说一下,允许更少的对象变量声明和使用
并且因为它是声明和实例化
的最佳实践