Option Explicit
Dim MyNumbers() As Integer
Dim MyNumberSet() As Integer
Dim MyChosen() As Integer
Dim MyUpper As Integer
Dim MyTop As Integer
Private Declare Sub ShiftMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Private Sub Form_Load()
MyUpper = 15
Call SETUP_SOURCE
Call REDIM_IT
End Sub
Private Sub SETUP_SOURCE()
Dim MyI As Integer
ReDim MyNumberSet(MyUpper - 1)
For MyI = 0 To UBound(MyNumberSet)
MyNumberSet(MyI) = (MyI + 1)
Next MyI
ReDim MyNumbers(MyUpper - 1)
ReDim MyChosen(MyUpper - 1)
End Sub
Private Sub Command1_Click()
Dim SELECTED_1_Thru_MyUpper As Integer '
Dim MyI As Integer
Randomize
Call REDIM_IT
'List1.Clear
MyTop = MyUpper - 1
For MyI = 0 To UBound(MyNumbers)
SELECTED_1_Thru_MyUpper = Int(Rnd * (MyTop + 1))
MyChosen(MyI) = REMOVE_ELEMENTS(MyNumbers, SELECTED_1_Thru_MyUpper, MyTop)
Next MyI
'For MyI = 0 To UBound(MyChosen)
' List1.AddItem MyChosen(MyI)
'Next MyI
End Sub
Private Sub REDIM_IT()
ShiftMemory MyNumbers(0), MyNumberSet(0), 2 * MyUpper
End Sub
Private Function REMOVE_ELEMENTS(ByRef inArr() As Integer, ByRef RemoveWhichOne As Integer, ByRef HowManyToChooseFrom As Integer) As Integer
REMOVE_ELEMENTS = inArr(RemoveWhichOne)
If RemoveWhichOne <> HowManyToChooseFrom Then
ShiftMemory inArr(RemoveWhichOne), inArr(RemoveWhichOne + 1), 2 * (HowManyToChooseFrom - RemoveWhichOne)
End If
HowManyToChooseFrom = HowManyToChooseFrom - 1
End Function