What about this for a shuffle?
Code:
Private Sub ShuffleCards()
Dim TempValue As Integer
Dim LoopCounter As Integer
Dim ItemPicked As Integer
Dim Remaining As Integer

'One Card Shuffle
'Initialize CardNumber
For LoopCounter = 1 To 52
    CardNumber(LoopCounter) = LoopCounter
Next LoopCounter

'Work through remaining values
For Remaining = 52 To 2 Step -1
    ItemPicked = Int(Rnd * Remaining) + 1
    TempValue = CardNumber(Remaining)
    CardNumber(Remaining) = CardNumber(ItemPicked)
    CardNumber(ItemPicked) = TempValue
Next Remaining
End Sub
This is the code that's in my course book.