Private Sub Form_Click()Dim a(10) As IntegerRandomizeFor i = 0 To 9a(i) = Int(21 + 50 * Rnd()) '可以拆開嗎?NextFor i = 0 To 9Print a(i);Nextb = a(i)flag = 1 '假設(shè)不重復(fù)For i = 0 To 9If a(i) = b Thenflag = 0i = i - 1Exit ForEnd IfNextIf flag = 1 ThenPrint a(i)End IfEnd Sub為毛輸出以后最后一個數(shù)是0 我改啊改啊的總有一個倆數(shù)的重復(fù)
2 回答

夢里花落0921
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個贊
給你兩個思路
1.每生成一個數(shù)
然后利用 application.worksheetfunction.countif(range("a:a"),新生成的數(shù)) 得出有沒有重復(fù)
沒有 則 ,就填入excel的格子內(nèi),比如按A列填下來
有則不填入excel
2.定義一個字符串 比如 str
沒生成一個數(shù),就利用 instr(1,str,"-" & 新生成的數(shù) & "-") 判斷在str 里面有沒有存在
沒有存在就是不重復(fù),并利用 str = str & “-” & 新生成的數(shù)& "-" 更新str
看錯 以為是excel 的問題呢
那你采用 第二個思路試試

收到一只叮咚
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個贊
Private Sub Form_Click() Dim a(10) As Integer Randomize For i = 0 To 9 a(i) = Int(21 + 50 * Rnd()) If i > 0 Then flag = 1 '假設(shè)不重復(fù) For j = 0 To i - 1 If a(i) = a(j) Then flag = 0 i = i - 1 Exit For End If Next End If If flag = 1 Then Print a(i) Next End Sub
添加回答
舉報(bào)
0/150
提交
取消