Hoi Skytiger,
als voorafje:
Ik weet niet of je al ervaring hebt met vba en/of macro's (is eigenlijk hetzelfde). Zo ja, dan kun je met onderstaande vast wel uit de voeten. Zo nee, dan adviseer ik je om de basis ervan te googlen en dan na te gaan wat onderstaande code precies doet (ik heb er commentaar bijgezet).
Ik zeg dit, omdat blindelings code (die je niet snapt) interpreteren een heel erg slecht idee is (zelfs als het van een tweaker komt

). Met een stukje vba kun je eenvoudig iemands bestanden wissen, of zoeken naar het bestand "wachtwoorden.txt" en die kopiëren en emailen, of een virus installeren, of... of.... Zorg dus dat je de code snapt, voordat je hem gebruikt ;-)
Daarnaast heeft vba geen 'undo'-mogelijkheid, dus: data kwijt is data kwijt...
En dan nu het hoofdgerecht:
Onderstaande macro kiest drie verschillende namen uit de lijst "Scheidsrechters", en zet die in de cellen D3, F3 en H3.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| Option Explicit
Sub KiesScheidsrechters()
'declaratie
Dim varScheidsrechters() As Variant 'een array met daarin de namen uit de lijst "Scheidsrechters"
Dim strGekozenScheidsrechters(1 To 3) As String 'een array met de drie gekozen scheidsrechters
Dim strRandomNaam As String 'een random gekozen naam uit de array varScheidsrechters
Dim i As Integer 'een lusteller
'initialisatie
'zet de namen uit de lijst met scheidsrechters in een array
varScheidsrechters = Range(ActiveWorkbook.Names("Scheidsrechters").Value)
'doe het onderstaande 3x
For i = 1 To 3
'herhaal zo lang de random gekozen naam gelijk is aan "" (=leeg), of aan één van de drie gekozen scheidsrechters
Do While strRandomNaam = "" Or strRandomNaam = strGekozenScheidsrechters(1) Or _
strRandomNaam = strGekozenScheidsrechters(2) Or strRandomNaam = strGekozenScheidsrechters(3)
'kies random een naam uit de array met namen van alle scheidsrechters
strRandomNaam = varScheidsrechters(Application.WorksheetFunction.RandBetween(LBound(varScheidsrechters, 1), UBound(varScheidsrechters, 1)), 1)
Loop
'heben we een naam gekozen die nog niet voorkomt bij de gekozen scheidsrechters, ken deze dan toe als i-de gekozen naam
strGekozenScheidsrechters(i) = strRandomNaam
Next i
'zet de namen van de scheidsrechters in de velden D3, F3 en H3
With ActiveWorkbook.Sheets(1)
.Range("D3").Value = strGekozenScheidsrechters(1)
.Range("F3").Value = strGekozenScheidsrechters(2)
.Range("H3").Value = strGekozenScheidsrechters(3)
End With
End Sub |