• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

random nummer uit een lijst kiezen

Status
Niet open voor verdere reacties.

HWV

Terugkerende gebruiker
Lid geworden
19 feb 2009
Berichten
1.183
Beste,

Ik ben aan het onderzoeken wat de mogelijkheden zijn om uit een lijst random een nummer te kiezen.
De bedoeling is dat ik uit een lijst die bv in kolom A staat, random een nummer laat zien in een userform.
Ik heb wel gevonden hoe je een random nummer kan laten zien maar niet dat hij een bestaande nummer uit een lijst toont die in bv in kolom A staat.

De case is dat ik zo random een dossiernummer wil oproepen om een controle op uit te oefenen.

Hebben jullie hier ervaring mee, en kunnen jullie mij hier in ondersteunen ho ik dit moet aanpakken.

Alvast dank voor de aangeboden hulp.

Henk
 
Gebruik de functie ASELECTTUSSEN om een getal te genereren en daarmee via bijvoorbeeld VERT.ZOEKEN of INDEX een regel uit dat bereik te selecteren.
 
Laatst bewerkt:
Als formule zou je dit kunnen gebruiken:

Code:
=AFRONDEN(ASELECT()*MAX(A:A);0)
 
Met de lijst in A1:A1000
Code:
=INDEX(A:A;ASELECTTUSSEN(1;1000))
 
Code:
=INDEX(A:A;ASELECTTUSSEN(1;8))

Hier is het mee gelukt, ik heb nu in kolom A cel 1 t/m 8 gevuld, en zo geef hij 1 van de juiste getallen met de juiste waarde.
Bedankt voor de hulp, ik kan deze nu verwerken in mijn originele bestand en koppelen aan mijn Userform.
Is het dan het beste om deze functie gebruiken bij het openen van de Userform als de uitkomst staat in B1:

Code:
ThisWorkbook.Worksheets("Sheet1").Range("B1").Calculate

Of zijn er andere mogelijkheden.

Henk
 
Plaats toch een voorbeeldbestand, dan moeten we niet gokken wat je eigenlijk wil.
 
Beste,

Zie bijlage zover ik het nu heb.
Het gaat er mij om of ik de VBA erachter goed heb, of kan dit makkelijker.


Code:
Private Sub CommandButton1_Click()
ThisWorkbook.Worksheets("Blad1").Range("C1").Calculate
TextBox1.Value = ThisWorkbook.Worksheets("Blad1").Range("C1").Value
End Sub


Dan met de formule
Code:
=INDEX(A:A;ASELECTTUSSEN(1;8))

Is het mogelijk dat de ik de 1;8 variabele maak, dus als er een dossiernummer bij komt dat hij in dit geval dan 1;9 pakt enz. enz.


Groet Henk
 

Bijlagen

  • Random dossiernummer.xlsm
    20,4 KB · Weergaven: 29
Laatst bewerkt:
Je kan die bewerking ook al bij het aanroepen van de Userform laten uitvoeren:

Code:
Private Sub UserForm_Initialize()
TextBox1.Value = ThisWorkbook.Worksheets("Blad1").Range("C1").Value
End Sub

Code:
Private Sub UserForm_Initialize()
ThisWorkbook.Worksheets("Blad1").Range("C1").Calculate
TextBox1.Value = ThisWorkbook.Worksheets("Blad1").Range("C1").Value
End Sub
 
Laatst bewerkt:
Had je tweede vraag over het hoofd gezien:

Ja

Code:
=(INDEX(A:A;ASELECTTUSSEN(2;AANTAL.ALS(A:A;"<>"))))
 
Geweldig

Bedankt voor de ondersteuning, ik ben tot mijn doel gekomen.
Ik ga het nu inbouwen in het originele bestand.


Henk
 

Bijlagen

  • Random dossiernummer.xlsm
    21 KB · Weergaven: 34
Mooi dat je tevreden bent, maar zoals je het nu in de bijlage hebt weggezet zul je met de UserForm_Initialiaze steeds hetzelfde dossiernummer krijgen, omdat dit deel van de code ontbreekt:

Code:
Private Sub UserForm_Initialize()
ThisWorkbook.Worksheets("Blad1").Range("C1").Calculate
End Sub

De volledige code moet zijn:

Code:
Private Sub UserForm_Initialize()
ThisWorkbook.Worksheets("Blad1").Range("C1").Calculate
TextBox1.Value = ThisWorkbook.Worksheets("Blad1").Range("C1").Value
End Sub
 
Gewoon door VBA laten afhandelen.

Code:
Private Sub UserForm_Initialize()
  ar = Sheets("Blad1").Cells(1).CurrentRegion
  TextBox1.Value = ar(Application.RandBetween(2, UBound(ar)), 1)
End Sub
 
Werkt perfect, dank voor de reactie.

Henk
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan