Simplifying code using array

J

John Pierce

Is there a way to say that MyArray(5) cannot equal any element of the
array, without listing each element, as below?
Do
MyArray(5) = Int(10 * Rnd)
Loop Until MyArray(5) <> MyArray(4) And _
MyArray(5) <> MyArray(3) And _
MyArray(5) <> MyArray(2) And _
MyArray(5) <> MyArray(1)
 
T

Tom Ogilvy

Sub Tester13()
Dim myArray(1 To 10)
For i = 1 To 10
Do
temp = Int(10 * Rnd + 1)
bMatch = False
For j = 1 To i - 1
If myArray(j) = temp Then
bMatch = True
Exit For
End If
Next
Loop While bMatch
myArray(i) = temp
sStr = sStr & "myarray(" & i & ")= " & myArray(i) & vbNewline
Next
msgbox sStr
End Sub
 
C

Colo

Hi John,
I assume you would like to make an unique number list in array...
The random number value sequence not overlapping is generated by
shuffling the arrangement which put in order the value which can
usually be taken.


Code:
--------------------

Sub TestShuffleArrayAsRandom()
Const n As Long = 5
Dim MyArray() As Long
Dim i As Long
Dim r As Long
Dim tmp

ReDim MyArray(0 To n)

'Make a sample MyArrayay
For i = 0 To n
MyArray(i) = i
Next

'Shuffle Array
For i = 1 To n
r = Int(Rnd() * n) + 1
tmp = MyArray(i): MyArray(i) = MyArray(r): MyArray(r) = tmp
Next
Stop 'Pls take a look at MyArray

End Sub
 
Top