|  
                                             
	Hallo an Alle, 
	ich bin absoluter Neuling in VBA. Allerdings sind andere Programmiersprachen (C, Java...) bekannt, 
	Ich bin dabei eine Zufallsgenerator für Namenauswahl zu erstellen. 
	Es gibt es Liste mit Namen und per Zufall sollen eine bestimmte Menge an Namen ausgewählt werden, hervorgehoben werden und in eine neue Zelle geschrieben werden. Soweit hatte das auch funktioniert, allerdings gab es doppelte Ergebnisse, weshalb ich die Zufallszahl gerne in ein Array speichern würde und nach jeder Generierung der Zufallszahl (geschieht in einer For) abgleicht, ob die Zahl schon vorhanden ist. 
	Bei Ausführen erhalte ich den Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs. 
	Kann mir einer kurz helfen? Finde meinen Fehler nicht.Hallo an Alle, 
	  
Private Sub CommandButton1_Click() 'Zufall
    
    Dim a As Integer 'Anzahl Namen aus Formel (ZAEHLEWENN)
        a = Sheets("Tabelle1").Range("E9").Value
    Dim zufall() As String 'Array definieren
    ReDim zufall(1 To a) As String
        
    Dim zaehler As Integer ' Zaehler f¸r Zellen zum Schreiben der Liste, soll erst bei 2 beginnen
        zaehler = 2
    Dim zaehler_arr As Long 'Zaehler f¸r Array
        zaehler_arr = 1
    Dim intRow As Integer
        For intRow = 1 To Range("E1")
            Dim r As Range, zufallszelle As Integer, zufallsbereich As Integer
                Set r = Range("B2:B3000").SpecialCells(xlCellTypeConstants) 'merke dir nur bef¸llte Zellen (hier nur Konstanten, formeln w¸rden ignoriert)
                zufallsbereich = Int(Rnd() * r.Areas.Count) + 1  'Ermittle, aus wievielen Bereichen die bef¸llten Zellen bestehen und suche dir irgendeine aus (RND-Funktion)
Sprungziel:     zufallszelle = Int(Rnd() * r.Areas(zufallsbereich).Cells.Count) + 1  'Such dir aus dem beliebigen Bereich irgendeine Zelle aus
                
                zufall(zaehler_arr) = zufallszelle 'speichere Zufallszelle in Array
                zaehler_arr = zaehler_arr + 1 'Zahler f¸r Array
                
                Dim j As Long, found As Boolean
                    For j = 1 To UBound(zufall)
                        If zufall(j) = zufallszelle Then
                            found = True
                        
                        End If
                    Exit For
                    Next j
                    
                    If found = True Then
                        GoTo Sprungziel 'Berechne neue Zufallszelle
                    Else
                        r.Areas(zufallsbereich).Cells(zufallszelle).Activate  'Aktiviere die zufallszelle im Zufallsbereich
                        r.Areas(zufallsbereich).Cells(zufallszelle).Interior.ColorIndex = 4
                        Sheets("Tabelle1").Range("G" & zaehler).Value = r.Areas(zufallsbereich).Cells(zufallszelle) 'Werte in aktuelle Zelle schreiben
                        zaehler = zaehler + 1 'zaehler f¸r Zelle um eins erhoehen
                    End If
            Next intRow
    Range("E1").Select 'Auswahl von E1 um nicht auf aktiver Zufallszahlzelle zu landen
End Sub
	  
     |