Try this:
Option Explicit
Sub test()
'Prints 10 out of 100 numbers
Dim TotalNumOfQuestions As Integer
Dim NumOfSamples As Integer
Dim MyArray() As Integer
Dim i As Integer
TotalNumOfQuestions = 100
NumOfSamples = 10
MyArray = GenerateArray(TotalNumOfQuestions, NumOfSamples)
For i = 0 To NumOfSamples - 1
Debug.Print MyArray(i);
Next
Debug.Print
End Sub
Function RandInt(MaxInt) As Integer
Dim x As Integer
x = Int(Rnd * MaxInt) + 1
RandInt = x
End Function
Function GenerateArray(TotalNumOfQuestions As Integer, _
NumOfSamples As Integer) As Integer()
Dim i As Integer, j As Integer
Dim tmp As Integer
Dim UniqueNumbers() As Integer
Dim NotUnique As Boolean
If TotalNumOfQuestions < NumOfSamples Then
Err.Raise vbObjectError + 1, "GenerateArray", _
"Can't create unique numbers"
Exit Function
End If
ReDim UniqueNumbers(NumOfSamples - 1)
For i = 0 To NumOfSamples - 1
tmp = RandInt(TotalNumOfQuestions)
Do
NotUnique = False
For j = 0 To i - 1
If tmp = UniqueNumbers(j) Then
tmp = RandInt(TotalNumOfQuestions)
NotUnique = True
Exit For
End If
Next
Loop While NotUnique
UniqueNumbers(i) = tmp
Next
GenerateArray = UniqueNumbers
End Function
Alex.