zoals RANDOMIZE

Status
Niet open voor verdere reacties.

Rudi Rombouts

Verenigingslid
Lid geworden
31 jan 2002
Berichten
396
Ik ben op zoek naar een functie (zoiets als RANDOMIZE) doch die getallen neem uit een reeks die ik kan aanvinken (per getal)
 
Maak een dynamische array waarin je óf de array waarden óf de array indexen bewaart. Laat vervolgens de randomizer lopen en kies vervolgens een random index uit je array.

Probleem opgelost.

HTH
Weest gegroet,
Guus
 
Denk dat hetgeen is wat ik zoek
begrijp wat u bedoeld, doch waarschijnlijk gaat me het iets te ver
is het mogelijk dat u een klein voorbeeld geeft

Rudi
 
Hieronder een paar flarden code. Deze verzin ik hier ter plekke dus die moet je debuggen. Ik hou option base 1 aan (de array begint dus bij 1 en niet bij 0).

Code:
'Array definieren
Dim arrX(2,5) as integer
Dim arrDyn() as integer
Dim intX as integer, intY as integer
dim intZ as integer

'Array vullen
arrX(2,1) = 23
arrX(2,2) = 1
arrX(2,3) = 24
arrX(2,4) = 67
arrX(2,5) = 41

'Keuze maken in je array. Ik selecteer 23, 24 en 41
arrX(1,1) = 1
arrX(1,3) = 1
arrX(1,5) = 1

'Index initieren
intY = 1

'Doorloop je (aanvink) array
For intX = 1 to 5
    if arrX(1,intX) = 1 then
    'Herdemensioneer je dynamische array met behoud van inhoud (preserve)
        Redim Preserve arrDyn(intY)
        arrDyn(intY) = arrX(1,intX)
    endif
Next intX

'Randomizer starten
Randomize

'Index waarde naar boven afronden
intZ = int((rnd(1)  * intY) + 0.5)

'De randomizer heeft nu een integer waarde opgeleverd intZ die je als index gebruikt voor je array dus:

arrDyn(intZ)

'Is de random waarde uit de lijst waaruit je gekozen hebt.

Enjoy!

Weest gegroet,
Guus
 
Bedankt doch "net ietsje te moelijke"

ga het in iedergeval later verder mee

Rudi
 
Random

Nog een oplossing:

Maak een userform (UserForm1) met checkboxen (CheckBox1, CheckBox2, enzovoort) en een opdrachtknop (CommandButton1; Getal).

Verander de Caption van elke checkbox in de gewenste getallen en selecteer de gewenste checkboxen en klik steeds op Getal

Kopieer de volgende code:

Option Explicit

Private Sub CommandButton1_Click()
Dim a() As Integer
Dim f
Dim n As Integer

Randomize
ReDim a(UserForm1.Controls.Count)
For Each f In UserForm1.Controls
If Left(f.Name, 8) = "CheckBox" Then If f.Value Then n = n + 1: a(n) = f.Caption
Next
MsgBox "Getal is " & a(Int(n * Rnd) + 1) & vbCr & n
End Sub

Private Sub UserForm_Initialize()
Dim f

For Each f In UserForm1.Controls
If Left(f.Name, 8) = "CheckBox" Then f.Caption = InputBox("Getal voor " & f.Name)
Next
End Sub
 
Random

Sorry, een foutje in de regel met MsgBox. Het laatste gedeelte "& vbcr & n" moet vervallen. Dat was om de code te controleren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan