I'm doing a card draw simulation. I need to draw 8 random cards (with no duplicates) out of 52. I'll include my code below which is giving me a Run Time 28 error (Out of Stack Space). I am pretty sure my problem exists where I actually have Subs that call to themselves. I am sure there is an easier way to do this, but couldn't think of one.
Hopefully this is pretty clear what my intentions were. I just wanted to generate 8 integers (CARD1 - CARD8) out of a range between 1-52 (a deck of cards) and then display them in cells A1-A8.
Any help is appreciated.
Hopefully this is pretty clear what my intentions were. I just wanted to generate 8 integers (CARD1 - CARD8) out of a range between 1-52 (a deck of cards) and then display them in cells A1-A8.
Any help is appreciated.
Code:
Dim CARD1 As Integer
Dim CARD2 As Integer
Dim CARD3 As Integer
Dim CARD4 As Integer
Dim CARD5 As Integer
Dim CARD6 As Integer
Dim CARD7 As Integer
Dim CARD8 As Integer
Sub DRAW8CARDS()
CARD1RAND
CARD2RAND
CARD3RAND
CARD4RAND
CARD5RAND
CARD6RAND
CARD7RAND
CARD8RAND
Sheets("Sheet1").Range("A1").Value = CARD1
Sheets("Sheet1").Range("A2").Value = CARD2
Sheets("Sheet1").Range("A3").Value = CARD3
Sheets("Sheet1").Range("A4").Value = CARD4
Sheets("Sheet1").Range("A5").Value = CARD5
Sheets("Sheet1").Range("A6").Value = CARD6
Sheets("Sheet1").Range("A7").Value = CARD7
Sheets("Sheet1").Range("A8").Value = CARD8
End Sub
Sub CARD1RAND()
CARD1 = Int((52 - 1 + 1) * Rnd + 52)
End Sub
Sub CARD2RAND()
CARD2 = Int((52 - 1 + 1) * Rnd + 52)
If CARD2 = CARD1 Then
CARD2RAND
End If
End Sub
Sub CARD3RAND()
CARD3 = Int((52 - 1 + 1) * Rnd + 52)
If CARD3 = (CARD1) Or (CARD2) Then
CARD3RAND
End If
End Sub
Sub CARD4RAND()
CARD4 = Int((52 - 1 + 1) * Rnd + 52)
If CARD4 = (CARD1) Or (CARD2) Or (CARD3) Then
CARD4RAND
End If
End Sub
Sub CARD5RAND()
CARD5 = Int((52 - 1 + 1) * Rnd + 52)
If CARD5 = (CARD1) Or (CARD2) Or (CARD3) Or (CARD4) Then
CARD5RAND
End If
End Sub
Sub CARD6RAND()
CARD6 = Int((52 - 1 + 1) * Rnd + 52)
If CARD6 = (CARD1) Or (CARD2) Or (CARD3) Or (CARD4) Or (CARD5) Then
CARD6RAND
End If
End Sub
Sub CARD7RAND()
CARD7 = Int((52 - 1 + 1) * Rnd + 52)
If CARD7 = (CARD1) Or (CARD2) Or (CARD3) Or (CARD4) Or (CARD5) Or (CARD6) Then
CARD7RAND
End If
End Sub
Sub CARD8RAND()
CARD8 = Int((52 - 1 + 1) * Rnd + 52)
If CARD8 = (CARD1) Or (CARD2) Or (CARD3) Or (CARD4) Or (CARD5) Or (CARD6) Or (CARD7) Then
CARD8RAND
End If
End Sub
Last edited: