RE:uso de Rnd y Randomize
Randomize te da la "semilla", es decir el número que se va a utilizar en una ecuación que genera "números aleatorios", por lo que si quieres que no se repita esa "semilla" debes utilizar Randomize Timer, con esto la semilla será diferente según la hora y mejoras la aleatoriedad.
Ahora que, si lo que quieres es, por ejemplo, que de 10 números (1, 2, 3...., 10) te escoja sólo uno y no lo repita después, puedes hacer lo siguiente:
Dim escoger() As Integer 'matriz donde estarán tus números que no se van a repetir
Dim total as Integer 'numeros que tienes para escoger
Private Sub asignar()
Dim n As integer
Redim escoger(1 To 10)
total = Ubound(Escoger)
For n = 1 To Ubound(escoger)
escoger(n) = n
Next n
End sub
Private Function Numeroalazar()
Dim minum As Integer
Dim devolver as Integer
Randomize Timer
minum = Int(Rnd * total) + 1 'obtenemos numero al azar de 1 a total
devolver = escoger(minum) 'es el número al azar de tu lista de números que se va a devolver
For n = 1 To total - 1
If minum >= n Then 'recorremaos la matriz para eliminar el número que ya escogiste al azar
escoger(n) = escoger(n + 1)
End If
next n
total = total -1 'reducimos el número de opciones
Redim Preserve escoger(total)
Numeroalazar = devolver
End Function