A evo i opste resenje, za bilo koji niz i bilo koji broj slucajnih clanova tog niza. Za demonstraciju je potreban nov projekat sa jednom formom i jednim CommandButtonom pod imenom "Command1"
Code:
Option Explicit
Private Sub Command1_Click()
Dim varTestNiz As Variant
Dim bytBrojClanova As Byte
Dim strOdgovor As String
Dim strRezultat As String
'Iniciranje niza (moze se naravno i preuzeti postojeci)
varTestNiz = Array(1, 6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56)
'Trazi se od korisnika da upise broj clanova koji mu treba
strOdgovor = InputBox("Upisite koliko zelite slucajnih brojeva:", "Upis broja", "3")
'Proverava se da li je upisan broj izmedju 1 i 255, zbog byte tipa
If Val(strOdgovor) < 1 Or Val(strOdgovor) > 255 Then
MsgBox "Morate upisati broj izmedju 1 i 255", vbCritical, "Greska"
Exit Sub
End If
'Konverzija upisanog teksta u byte tip
bytBrojClanova = CByte(strOdgovor)
'Poziv funkcije i spajanje clanova odvojenih zarezom u string
strRezultat = Join(NizSlucajnihBrojeva(varTestNiz, bytBrojClanova), ", ")
'Prikaz rezultata
MsgBox "Dobili ste niz slucajnih brojeva: " & strRezultat, vbInformation, "Resenje"
End Sub
Public Function NizSlucajnihBrojeva(ByVal varPolazniNiz As Variant, ByVal bytTrazeniBrojClanova As Byte) As Variant
Dim bytCounter As Byte
Dim varRezultat As Variant
Dim intUkupnoClanova As Integer
'Dimenzionisanje niza brojeva koji ce biti rezultat funkcije (u trazenom primeru niz od 3 clana)
ReDim varRezultat(bytTrazeniBrojClanova - 1)
'Aktiviranje generatora slucajnih brojeva
Randomize
'Odredjivanje broja clanova niza iz kog se uzimaju brojevi po slucajnom izboru
intUkupnoClanova = UBound(varPolazniNiz) + 1
'Formiranje rezultujuceg niza u petlji trazeni broj puta
For bytCounter = 0 To bytTrazeniBrojClanova - 1
varRezultat(bytCounter) = varPolazniNiz(Int(Rnd * intUkupnoClanova))
Next
'Prosledjivanje konacnog rezultata funkciji
NizSlucajnihBrojeva = varRezultat
End Function
[Ovu poruku je menjao goranvuc dana 15.05.2007. u 23:31 GMT+1]