Thema Datum  Von Nutzer Rating
Antwort
Rot Laufzeitfehler 9 - Zufallsgenerator in neue Zellen mit Array
07.06.2017 15:21:25 wit4r7
NotSolved
07.06.2017 15:55:23 wit4r7
NotSolved

Ansicht des Beitrags:
Von:
wit4r7
Datum:
07.06.2017 15:21:25
Views:
1027
Rating: Antwort:
  Ja
Thema:
Laufzeitfehler 9 - Zufallsgenerator in neue Zellen mit Array

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

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Laufzeitfehler 9 - Zufallsgenerator in neue Zellen mit Array
07.06.2017 15:21:25 wit4r7
NotSolved
07.06.2017 15:55:23 wit4r7
NotSolved