|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
各位老师:
在论坛里面,找到一段代码是随机生成不重复数,我增加了一个循环,让程序运行一段时间(比较有仪式感)。
现在需要变成按一下开始,按一下结束,或者是按第一个按钮开始,按第二个按钮停止。我使用doevent语句避免无法插入控制,但想不到如何停止,求各位老师指点。
代码如下:
Sub kagawa() '指定区间内 均匀随机取不重复值 按指定列数输出
For z = 1 To 500
Randomize
d = [d2]: a = [a2] * 10 ^ d: b = [b2] * 10 ^ d
m = [c2]: h = [e2]: l = [g2]: r = [h2]
ReDim c(m - 1)
If b - a < m * h Then c(0) = a Else c(0) = Int(((b - a + 1) / m - h) * Rnd()) + a
n = 0
Do
If b - c(n) < (m - n) * h Then
If c(n) + h <= b Then
c(n + 1) = c(n) + h
Else
GoTo Ext
End If
Else
c(n + 1) = c(n) + Int(((b - c(n) + 1) / (m - n) - h) * Rnd() * 2) + h
End If
n = n + 1
Loop Until n = m - 2
c(m - 1) = c(n) + Int((b - c(n) + 1 - h) * Rnd()) + h
Ext:
ReDim f(m \ l, l - 1)
If r = 0 Then
For i = 0 To m - 1
r = Int((m - i) * Rnd()) + i
t = c(r): c(r) = c(i): c(i) = c(r)
f(i \ l, i Mod l) = t / 10 ^ d
Next
Else
For i = 0 To m - 1
f(i \ l, i Mod l) = c(i) / 10 ^ d
Next
End If
[a5].Resize(m \ l + 1, l) = f
Range("G5").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-6],Sheet2!C1:C2,2,0)"
Range("G5").Select
Selection.AutoFill Destination:=Range("G5:G13"), Type:=xlFillDefault
DoEvents
Next z
End Sub
|
|