作者taidocky (taidocky)
看板Office
标题[算表] EXCEL VBA 取不重复的乱数
时间Thu Aug 29 17:11:21 2019
我用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://webptt.com/cn.aspx?n=bbs/Office/M.1567069883.A.C47.html
1F:→ soyoso: 再设计个按钮是回传luckynumber结果的 08/29 17:28
2F:→ soyoso: 原先按钮1产生的乱数看要暂存於储存格或是变数内,变数内 08/29 17:28
3F:→ soyoso: 的话,插入个模组,public LuckyNumber() as integer 08/29 17:30
4F:→ soyoso: 和public 变数 as integer,这个变数用於按钮2 08/29 17:30
5F:→ soyoso: 原本写於按钮1内宣告dim LuckyNumber() as integer就删除 08/29 17:31
6F:→ soyoso: 按钮2_click触发事件,就为range("b3") = luckynumber(变 08/29 17:32
7F:→ soyoso: 数) 08/29 17:32
8F:→ soyoso: 变数=变数+1 08/29 17:33
9F:→ soyoso: 按钮1_click方面则要在每次产生新乱数时,将上述变数设为 08/29 17:34
10F:→ soyoso: 08/29 17:34
11F:→ soyoso: 0(变数=0) 08/29 17:34
12F:→ taidocky: 谢谢楼上大大的说明,我有概念了!那再请教一下,如何 08/29 17:57
13F:→ taidocky: 让按钮1只能点击1次呢?产生乱数後就不能再按了 08/29 17:57
14F:→ soyoso: 按钮1.enabled = false 08/29 18:13