Ich arbeite an Zufallszahlen VBA und der unten genannte Code wählt einen Namen aus Blatt2 und Kopien auf Blatt 1 und ich kann diese Schritte wiederholen, um 3 verschiedene Namen aus dieser Liste auszuwählen. Dieser Code macht einen fantastischen Job, wenn alle drei Namen in drei aufeinander folgenden Zeilen stehen, aber er versäumt es, drei verschiedene Namen zu wählen, wenn er sich in Zeile 5, Zeile 10 und Zeile 15 befindet. Kann jemand mir helfen, drei verschiedene Namen zu wählen und sie in Reihen zu setzen, die 5 Reihen auseinander liegen? (1. Name in der 1. Reihe, 2. Name in der 5. Reihe und 3. Name in der 15. Reihe) Ich bin neu bei VBA!Ausgabe von Zufallszahlen in drei verschiedenen Zeilen
Sub DDQ1()
Application.ScreenUpdating = False
Dim source, destination As Range
Set source = Sheets("sheet2").Range("A60:A81")
Sheets("sheet1").Activate
Set destination = ActiveSheet.Range("B53")
ReDim randoms(1 To source.Rows.Count)
destrow = 0
For i = 1 To destination.Rows.Count
If destination(i) = "" Then: destrow = i: Exit For
Next i
If destrow = 0 Then: MsgBox "no more room in destination range": Exit Sub
For i = 1 To UBound(randoms): randoms(i) = Rnd(): Next i
ipick = 0: tries = 0
Do While ipick = 0 And tries < UBound(randoms)
tries = tries + 1
minrnd = WorksheetFunction.Min(randoms)
For i = 1 To UBound(randoms)
If randoms(i) = minrnd Then
picked_before = False
For j = 1 To destrow - 1
If source(i) = destination(j) Then: picked_before = True: randoms(i) = 2: Exit For
Next j
If Not picked_before Then: ipick = i
Exit For
End If
Next i
Loop
If ipick = 0 Then: MsgBox "no more unique name possible to pick": Exit Sub
destination(destrow) = source(ipick)
Application.ScreenUpdating = True
End Sub
Nicht die Antwort auf Ihr Problem, aber "Dim-Quelle, Ziel als Range" wird Ziel einen Bereich machen, aber Quelle als Variante. Sie brauchen 'Dim Quelle als Bereich, Ziel als Bereich ' – jcarroll
Ein wenig Formatierung würde hier einen langen Weg gehen. – RBarryYoung