Thema Datum  Von Nutzer Rating
Antwort
22.05.2017 19:04:44 eilyk13
NotSolved
22.05.2017 21:22:22 miramis
NotSolved
22.05.2017 21:28:08 eilyk13
NotSolved
Blau Laufzeitfehler 9
22.05.2017 23:43:25 Miramis
NotSolved

Ansicht des Beitrags:
Von:
Miramis
Datum:
22.05.2017 23:43:25
Views:
622
Rating: Antwort:
  Ja
Thema:
Laufzeitfehler 9

Hallo eillyk

Was verstehst Du im Code konkret nicht? Ich habe es noch ein bisschen ausführlicher kommentiert - vielleicht hilft das. Die Zufallszahlen werden nun im ersten Sheet Deiner Mappe ausgegeben.

 

Sub ZufallsauswahlTueteSticker()
'Gibt 5 zufällig ausgesuchte Zahlen zwischen 1 und 20 aus (keine doppelte)

    'Deklariere die Variablen
    '(Die kleingeschriebenen Buchstaben zu Beginn der Variablen sollen helfen den Typ zu erkennen
    'i = integer, bln = boolean, a = array, sh = worksheet - das ist nicht notwendig, aber je nachdem hilfreich)
    
    
    Const iAnzMotive As Integer = 20
    Const iAnzStickerInTuete As Integer = 5
    
    Dim aiSticker() As Integer
    ReDim aiSticker(iAnzStickerInTuete)
    
    
    Dim i As Integer, j As Integer, iZufallssticker As Integer
    Dim blnStickerSchonVorhanden As Boolean
    
    Dim shRandom As Worksheet
    
    
    Set shRandom = Worksheets(1)  'In dieses Sheet werden die Zufallszahlen ausgegeben (erstes sheet in deiner Mappe)
    
    'Intitialisiere die Karten in Deiner Tüte (array beginnt bei Null und nicht bei 1, wie in Deinem Code)
    For i = 0 To iAnzStickerInTuete - 1
        aiSticker(i) = 0
    Next i
    
    
    'Schleife durchlaufen bis 5 ( = iAnzStickerInTuete) unterschiedliche Motive gefunden wurden
    i = 0  'Wir beginnen wieder bei null, da Arrays in VBA bei Null beginnen
    Do Until i >= iAnzStickerInTuete
        Randomize
        iZufallssticker = CInt(Rnd() * (iAnzMotive - 1)) + 1   'Suche Zufallszahl und wandle sie in Integer um
        blnStickerSchonVorhanden = False
        
        'Überprüfen, ob der Sticker bereits vorhanden ist
        For j = 0 To i - 1
            If aiSticker(j) = iZufallssticker Then
                blnStickerSchonVorhanden = True
                Exit For
            End If
        Next j
        
        'Falls Sticker noch nicht vorhanden, stecke ihn in die Tüte
        If blnStickerSchonVorhanden = False Then
            aiSticker(i) = iZufallssticker
            
            'Ausgabe in Direktbereich
           ' Debug.Print "Sticker " & i + 1 & ": " & iZufallssticker
            
            
            'Ausgabe im ersten Excel-Sheet in der Spalte A
            shRandom.Cells(i + 1, 1).Value = iZufallssticker
            
            i = i + 1
        End If
    Loop

        
End Sub

Liebe Grüsse

 

Miramis


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
22.05.2017 19:04:44 eilyk13
NotSolved
22.05.2017 21:22:22 miramis
NotSolved
22.05.2017 21:28:08 eilyk13
NotSolved
Blau Laufzeitfehler 9
22.05.2017 23:43:25 Miramis
NotSolved