这段代码的功能是把1-16的数字进行随机排列。要求无重复,无遗漏
为了实现这个功能困惑了很久。昨天在CSDN找到了这段代码。有些地方不太
明白。请各位路过者帮忙解释一下。谢谢
Private Sub Cmdrun_Click()
Dim jh As New Collection
For i = 1 To 16
jh.Add i
Next
Label1.Caption = ""
For ii = 1 To 16
Randomize
bb = Int(Rnd * jh.Count + 1)
aa = aa & " " & jh.Item(bb)'这句在这段代码中作用是什么?
'jh.Item(bb)是什么意思?
jh.Remove bb '这句在这段代码中作用是什么?为什么去掉这行就会重复呢?
Next
Label1.Caption = aa
End Sub
为了实现这个功能困惑了很久。昨天在CSDN找到了这段代码。有些地方不太
明白。请各位路过者帮忙解释一下。谢谢
Private Sub Cmdrun_Click()
Dim jh As New Collection
For i = 1 To 16
jh.Add i
Next
Label1.Caption = ""
For ii = 1 To 16
Randomize
bb = Int(Rnd * jh.Count + 1)
aa = aa & " " & jh.Item(bb)'这句在这段代码中作用是什么?
'jh.Item(bb)是什么意思?
jh.Remove bb '这句在这段代码中作用是什么?为什么去掉这行就会重复呢?
Next
Label1.Caption = aa
End Sub
'jh.Item(bb)是什么意思?
这句是把选择出的数字连接到一个字符串中。
jh.Item(bb) 是 jh 的 bb 项jh.Remove bb '这句在这段代码中作用是什么?为什么去掉这行就会重复呢?
因为从集合中删除了选中的项。
List1.AddItem i
Next i
Randomize
For i = 1 To 16
n = Int(Rnd * List1.ListCount)
Debug.Print List1.Lis(n)
List1.RemoveItem n
Next i你在最后一行 Next i 处设一个断点,逐个循环跑跑看,就明白了。
想象力也是编程必不可少的训练科目。