To add "visuals", it is actually creating some form delay. I use a separate function to create the delay, and make it generate lots of random numbers before displaying results.
Sub YourLottery()
Const l& = 1 'lower value
Const u& = 53 'upper value
Const n& = 6 'number of numbers per draw
Dim a(), b() As Boolean
Dim rws&, i&, x&, k&, j&, j2&
rws = 100 'number of lottery draws
ReDim a(1 To rws, 1 To n)
Randomize
For i = 1 To rws
Cells(i, 1).Value = "Draw " & i
ReDim b(l To u): k = 0
Do
x = Int(Rnd * u) + l
If Not b(x) Then k = k + 1: b(x) = True
Loop Until k = n
For j = 1 To 50
For j2 = 1 To n
Cells(i, 2 + j2).Value = Int(Rnd * u) + l
Next
Delay 0.01
Next
k = 0
For x = l To u
If b(x) Then k = k + 1: Cells(i, 2 + k).Value = x
Next x
Next i
End Sub
Private Function Delay(secs As Variant)
On Error GoTo Err_Pause
Dim PauseTime As Variant, start As Variant
PauseTime = secs
start = Timer
Do While Timer < start + PauseTime
DoEvents
Loop
Exit_Pause:
Exit Function
Err_Pause:
MsgBox Err.Number & " - " & Err.Description, vbCritical, "Delay()"
Resume Exit_Pause
End Function
Bookmarks