[算表] EXCEL VBA 取不重複的亂數

看板Office作者 (taidocky)時間6年前 (2019/08/29 17:11), 編輯推噓0(0014)
留言14則, 2人參與, 6年前最新討論串1/1
我用EXCEL的VBA 做了一個產生不重複的亂數程式 程式碼如下 Sub 按鈕1_Click() Dim LuckyNumber() As Integer, Upperbound As Integer, Lowerbound As Integer, ArrayLength As Integer, RndNumber As Integer, RndNumber2 As Integer, Temp As Integer Lowerbound = Range("D8").Value '從儲存格D8取亂數範圍的下限值 Upperbound = Range("D7").Value '從儲存格D7取亂數範圍的上限值 ArrayLength = Upperbound - Lowerbound ReDim LuckyNumber(ArrayLength) As Integer For i = 0 To ArrayLength LuckyNumber(i) = Lowerbound + i Next Randomize For j = 0 To ArrayLength RndNumber = Int((Upperbound - Lowerbound + 1) * Rnd) RndNumber2 = Int((Upperbound - Lowerbound + 1) * Rnd) Temp = LuckyNumber(RndNumber) LuckyNumber(RndNumber) = LuckyNumber(RndNumbber2) LuckyNumber(RndNumbber2) = Temp Next End Sub 目前程式是可以產生出不重複的亂數值 我想呈現出來的結果是 按一下按鈕1的時候 在儲存格B3的位置 就顯示出LuckyNumber(0)的亂數結果 再按一下按鈕1的時候 同樣在B3的位置顯示 LuckyNumber(1)的亂數結果 以此類推 可是現在每按一次按鈕1 亂數陣列LuckyNumber() 就再重新產生一次了.... 要如何讓亂數陣列固定下來 每按一次按鈕的時候 就顯示出下一個亂數 LuckyNumber(0)->LuckyNumber(1)->...LuckyNumber(N) 這個問題該怎麼解決? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.51.218.120 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1567069883.A.C47.html

08/29 17:28, 6年前 , 1F
再設計個按鈕是回傳luckynumber結果的
08/29 17:28, 1F

08/29 17:28, 6年前 , 2F
原先按鈕1產生的亂數看要暫存於儲存格或是變數內,變數內
08/29 17:28, 2F

08/29 17:30, 6年前 , 3F
的話,插入個模組,public LuckyNumber() as integer
08/29 17:30, 3F

08/29 17:30, 6年前 , 4F
和public 變數 as integer,這個變數用於按鈕2
08/29 17:30, 4F

08/29 17:31, 6年前 , 5F
原本寫於按鈕1內宣告dim LuckyNumber() as integer就刪除
08/29 17:31, 5F

08/29 17:32, 6年前 , 6F
按鈕2_click觸發事件,就為range("b3") = luckynumber(變
08/29 17:32, 6F

08/29 17:32, 6年前 , 7F
數)
08/29 17:32, 7F

08/29 17:33, 6年前 , 8F
變數=變數+1
08/29 17:33, 8F

08/29 17:34, 6年前 , 9F
按鈕1_click方面則要在每次產生新亂數時,將上述變數設為
08/29 17:34, 9F

08/29 17:34, 6年前 , 10F
08/29 17:34, 10F

08/29 17:34, 6年前 , 11F
0(變數=0)
08/29 17:34, 11F

08/29 17:57, 6年前 , 12F
謝謝樓上大大的說明,我有概念了!那再請教一下,如何
08/29 17:57, 12F

08/29 17:57, 6年前 , 13F
讓按鈕1只能點擊1次呢?產生亂數後就不能再按了
08/29 17:57, 13F

08/29 18:13, 6年前 , 14F
按鈕1.enabled = false
08/29 18:13, 14F
文章代碼(AID): #1TPvQxn7 (Office)
文章代碼(AID): #1TPvQxn7 (Office)