Option Explicit
Private Sub Command2_Click()
Dim numButtons As Integer
numButtons = Val(InputBox("How many buttons?"))
Dim i As Integer
For i = 1 To numButtons
Load cmdGuess(i)
cmdGuess(i).Visible = True
cmdGuess(i).Caption = Str(i)
cmdGuess(i).Top = cmdGuess(i - 1).Top + _
cmdGuess(i - 1).Height
Next i
Dim numLabels As Integer
numLabels = numButtons / 2
Dim num As Integer
For i = 1 To numLabels
num = getNextFreeButton(numButtons)
cmdGuess(num).Tag = Str(i)
num = getNextFreeButton(numButtons)
cmdGuess(num).Tag = Str(i)
Next i
For i = 1 To numButtons
cmdGuess(i).Caption = cmdGuess(i).Tag
Next i
End Sub
Private Function getNextFreeButton(ByVal numButtons As Integer) _
As Integer
Dim randomButton As Integer
randomButton = Int(Rnd * numButtons) + 1
Do While cmdGuess(randomButton).Tag <> ""
randomButton = Int(Rnd * numButtons) + 1
Loop
getNextFreeButton = randomButton
End Function
Private Sub Form_Load()
Randomize
End Sub