Use a collection with both key and text being a number from 1 to 50. Use Rnd with collectionname.count + 1 to select one of those numbers and retrieve the text. Then remove that item from the collection and thus it will never be called again... as an example
-
Dim C As New Collection, I As Integer
-
For I = 1 To 50
-
C.Add CStr(I), CStr(I)
-
Next I
-
I = Int(Rnd * C.Count + 1)
-
MsgBox C.Item(I)
-
C.Remove (I)
-
MsgBox C.Item(I)
-
as you can see from the second message box, a different number appears because the original number has been removed. Don't forget, use the collectionname.count to create your random number so you don't go out of bounds and don't forget to add a check to see if the collection is empty (Count = 0) and if it is to reload the collection with new numbers...
Edit: Also: Use the Randomize statement in form load so it is called only once...
Good Luck