Для того, чтобы получить массив, содержащий случайные, но неповторяющиеся числа, можно использовать нижеприведённую процедуру. Обратите внимание на то, что в данном примере генерируются целые числа от Min = 1 до Max = 1000, а количество элементов массива = 100.
Private Sub GetArrayUniqueRandom()
Dim iRndUnique(1 To 100) As Long
Dim iCount As Long, iRnd As Long
For iCount = 1 To 100 'UBound(iRndUnique)
Do
iRnd = Int(Rnd * 1000) + 1
Loop While IsNumeric(Application.Match(iRnd, iRndUnique, 0))
iRndUnique(iCount) = iRnd
Next
End Sub