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