Zum Inhalt springen

Optionsfelder und Antworten


cosimocaputo

Empfohlene Beiträge

Hallo

Fragen über Fragen.......

Aber was man hier mitnehmen kann an Wissen bekommt man nicht so schnell in einem Buch...

Also:

Ich möchte hier das die Antwort nicht immer Optionfeld C sein soll.

Bild:

kinder.png

Pfeil_1:

Das ist das Optionsfeld das sich immer ändert. das Problem ist das die Antwort monotom ist,sprich sie befindet sich immer auf C weil ich es nicht hinbekomme eine Zufallsantwort zu Coden.

Pfeil_2:

hier erscheinen Die Fragen wenn man auf einer des Pfeil_6 klickt.

Pfeil_3:

Wechselnde Bilder die immer wenn man Pfeil_6 klickt sich ändern.

Pfeil_4:

Hier kommt die Antwort ob richtig oder falsch nachdem man einen von der Optionfeld ausgesucht hat und auf Button Pfeil_5 klickt.

Peil_5:

Dieser Button ist für die Prüfung der Antwort zuständig

Pfeil_6:

Hier klickt man um die Fragen gestellt zu bekommen.das möchte ich noch als ein Button System Coden wenn ich mir gedanken gemacht habe wie das geht....

Was suche ich nun:

Das habe ich im Prinzip schon oben erwähnt bei Optionsfeld:

Ich möchte das wenn ich eine Frage beantworte diese Antwort nicht immer auf C sein sol sondern mal auf B und dann mal auf A und immer im wechsel . Weis das man dies mit dem Befehl RND machen kann aber wie . Kann mir das einer mal erklären , hier der Code der im moment besteht:

Option Explicit


Private Sub cmdHauptKL_Click()

frmHaupt.Show

End Sub


Private Sub cmdKLF_Click(Index As Integer)

If cmdKLF(0) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\schimpanse.jpg")

imgBild.Visible = True

lblFrageKL = "Wo ist der Schimpanse zu Haus? "

lblAntwortA.Caption = "Südamerika"

lblAntwortB.Caption = "Asien"

lblAntwortC.Caption = "Afrika"

End If

If cmdKLF(1) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\tiger.jpg")

imgBild.Visible = True

lblFrageKL = "Wie schwer wird ein männlicher Tiger? "

lblAntwortA.Caption = "bis zu 80 Kg"

lblAntwortB.Caption = "bis zu 180 Kg"

lblAntwortC.Caption = "bis zu 280 Kg"

End If

If cmdKLF(2) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\ibis.jpg")

imgBild.Visible = True

lblFrageKL = "Welcher Vogel kann rückwärts fliegen? "

lblAntwortA.Caption = "Ibis"

lblAntwortB.Caption = "Schwalbe"

lblAntwortC.Caption = "Kolibri"

End If

If cmdKLF(3) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\pinguin.jpg")

imgBild.Visible = True

lblFrageKL = "Wie brüten Kaiserpinguine ihr Ei aus? "

lblAntwortA.Caption = "im Nest"

lblAntwortB.Caption = "unter dem Flügel"

lblAntwortC.Caption = "in einer Hautfalte"

End If

If cmdKLF(4) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\strauß.jpg")

imgBild.Visible = True

lblFrageKL = "Worin halten Strauße Rekorde? "

lblAntwortA.Caption = "Sie können so schwer wie ein Tiger werden."

lblAntwortB.Caption = "Sie brüten von allen Vögeln die meisten Eier aus."

lblAntwortC.Caption = "Sie sind die schnellsten Zweibeiner."

End If

If cmdKLF(5) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\rothirsch.jpg")

imgBild.Visible = True

lblFrageKL = "Wer darf bei den Rothirschen zuerst essen? "

lblAntwortA.Caption = "die Jungtiere"

lblAntwortB.Caption = "die Weibchen"

lblAntwortC.Caption = "die Männchen"

End If

If cmdKLF(6) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\kaninchen.jpg")

imgBild.Visible = True

lblFrageKL = "Wie schnell kann ein flüchtender Hase werden?"

lblAntwortA.Caption = "50 Stundenkilometer"

lblAntwortB.Caption = "90 Stundenkilometer"

lblAntwortC.Caption = "70 Stundenkilometer"

End If

If cmdKLF(7) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\storch.jpg")

imgBild.Visible = True

lblFrageKL = "Was frißt der Weißstorch?"

lblAntwortA.Caption = "Knollen, Wurzeln, Frösche"

lblAntwortB.Caption = "Heuschrecken, Körner, Grassamen"

lblAntwortC.Caption = "Frösche, Mäuse, Regenwürmer"

End If

If cmdKLF(8) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\koala.jpg")

imgBild.Visible = True

lblFrageKL = "Was ist der Koala für ein Tier?"

lblAntwortA.Caption = "ein Bär"

lblAntwortB.Caption = "eine Raubkatze"

lblAntwortC.Caption = "ein Beuteltier"

End If

If cmdKLF(9) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\schlange.jpg")

imgBild.Visible = True

lblFrageKL = "Wie lang können Schlangen werden?"

lblAntwortA.Caption = "bis zu 2 Meter"

lblAntwortB.Caption = "bis zu 5,5 Meter"

lblAntwortC.Caption = "bis zu 9 Meter"

End If

If cmdKLF(10) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\echse.jpg")

imgBild.Visible = True

lblFrageKL = "Wann ändert das Chamäleon seine Farbe?"

lblAntwortA.Caption = "Wenn es sich tarnen will."

lblAntwortB.Caption = "Wenn es sich paaren will."

lblAntwortC.Caption = "Wenn es Hunger oder Durst hat."

End If

If cmdKLF(11) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\pferd.jpg")

imgBild.Visible = True

lblFrageKL = "Welches Geräusch macht das Pferd?"

lblAntwortA.Caption = "Brüllen"

lblAntwortB.Caption = "Röhren"

lblAntwortC.Caption = "Wiehern"

End If

If cmdKLF(12) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\schneeeule.jpg")

imgBild.Visible = True

lblFrageKL = "Wie entdeckt die Eule nachts ihre Beute?"

lblAntwortA.Caption = "mit der Nase"

lblAntwortB.Caption = "mit den Augen"

lblAntwortC.Caption = "mit den Ohren"

End If

If cmdKLF(13) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\giraffe.jpg")

imgBild.Visible = True

lblFrageKL = "Der Mensch hat 7 Halswirbel. Wieviele hat die Giraffe?"

lblAntwortA.Caption = "18"

lblAntwortB.Caption = "12"

lblAntwortC.Caption = "7"

End If

If cmdKLF(14) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\kaenguruh.jpg")

imgBild.Visible = True

lblFrageKL = "Wie kommt das neugeborene Känguruh in den Beutel?"

lblAntwortA.Caption = "Die Mutter legt Eier und brütet sie aus."

lblAntwortB.Caption = "Das Junge kommt im Beutel zur Welt."

lblAntwortC.Caption = "Das Junge kriecht nach der Geburt selbst hinein."

End If

If cmdKLF(15) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\wasserschildkroete.jpg")

imgBild.Visible = True

lblFrageKL = "Wie alt können Schildkröten werden?"

lblAntwortA.Caption = " 60 Jahren"

lblAntwortB.Caption = "120 Jahren"

lblAntwortC.Caption = "200 Jahren"

End If

If cmdKLF(16) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\fisch.jpg")

imgBild.Visible = True

lblFrageKL = "Warum heißt der Clownfisch -Clownfisch- ?"

lblAntwortA.Caption = "weil er im Wasser Purzelbäume schlägt"

lblAntwortB.Caption = "weil er Grimassen schneidet"

lblAntwortC.Caption = "wegen seiner bunten Färbung"

End If

If cmdKLF(17) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\tiger2.jpg")

imgBild.Visible = True

lblFrageKL = "Welches ist das schnellste Tier?"

lblAntwortA.Caption = "Der Panther"

lblAntwortB.Caption = "Der Tiger"

lblAntwortC.Caption = "Der Gepard"

End If

If cmdKLF(18) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\schmetterling.jpg")

imgBild.Visible = True

lblFrageKL = "Welches ist ein Schmetterling?"

lblAntwortA.Caption = "Die lustige Witwe"

lblAntwortB.Caption = "Der große General"

lblAntwortC.Caption = "Der kleine Fuchs"

End If

If cmdKLF(19) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\papagei.jpg")

imgBild.Visible = True

lblFrageKL = "Welcher Vogel legt Eier in fremde Nester?"

lblAntwortA.Caption = "Papagei"

lblAntwortB.Caption = "Graureiher"

lblAntwortC.Caption = "Kuckuck"

End If

If cmdKLF(20) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\elefant.gif")

imgBild.Visible = True

lblFrageKL = "Wofür sind Elefanten berühmt?"

lblAntwortA.Caption = "Für ihre Reinlichkeit"

lblAntwortB.Caption = "Für ihre Vorliebe, lange zu schlafen"

lblAntwortC.Caption = "Für ihr Gedächtnis"

End If


End Sub


Private Sub cmdStartKL_Click()

Dim strA As String

Dim intI As Integer

Dim intA As Integer

    strA = lblAntwortC.Caption 'Variable

With cmdKLF

    For intI = 0 To 20 'Schleife wie offt der durchlauf des Arrays

If intA = (optC.Value = False) Then

    lblTabelle1.Caption = "Glückwunsch!"

    lblTabelle = "Du hast recht." & vbCrLf & "Deine Antwort ist richtig die wie Folgt lautet"

    lblAnt = strA

Else: intA = ((optB.Value = True) And (optA.Value = True))

    lblTabelle1.Caption = "Falsche Antwort"

    lblTabelle = "Deine Antwort ist falsch." & vbCrLf & "Die richtige Antwort ist:"

    lblAnt = strA

End If

    intA = (intI)

    Exit For

    Next

        'Optionsfelder wieder auf Null setzen

        optA.Value = False

        optB.Value = False

        optC.Value = False

End With

End Sub


Private Sub Form_Load()

'-----------------------------------------------------------

'Hier wird der Name von der InputBox Übergeben

Dim N As String

N = frmHaupt.lblName.Caption

lblNameKL.Caption = "Hallo " & N

lblNameKLÜ = "Beantworte die gestellten Fragen.Du hast immer 3 vordefinierte Antworten und nur eine" _

& " davon ist richtig." & vbCr & "Viel Spaß"

'-----------------------------------------------------------

'Optionsfelder lehren

optA.Value = False

optB.Value = False

optC.Value = False

'------------------------------------------------------------



End Sub

Wie bekomme ich das nun in einer Schleife oder wie auch immer hin?

Danke.....

messagiero

Link zu diesem Kommentar
Auf anderen Seiten teilen

So ich habe mich mal rangesetzt und hoffe ich kann dir damit ein wenig helfen.

Insgesamt sieht der Quellcode für das Problem von dir bei mir so aus:

    

    Dim VarAntworten As Variant     'Array für die Antwortmöglichkeiten

    Dim IntZufall As Integer        'Zufallszahl

    Dim x As Integer, i As Integer, y As Integer, a As Integer  'Schleifenvariablen

    VarAntworten = Array("Südamerika", "Asien", "Afrika")

    i = 0

    For x = UBound(VarAntworten) To 0 Step -1

        IntZufall = Int((x + 1) * Rnd)

        UserForm1.Controls(i).Caption = VarAntworten(IntZufall)

        VarAntworten(IntZufall) = ""

        If x = UBound(VarAntworten) Then

            a = 1

        Else: a = 0

        End If

        For y = 0 To x - a Step 1

            If VarAntworten(y) = "" Then

                VarAntworten(y) = VarAntworten(y + 1)

                VarAntworten(y + 1) = ""

            End If

        Next y

        i = i + 1

    Next x

Und folgendermaßen habe ich es mir gedacht, wie du das in deinen Quellcode einbinden könntest. Beim Aufruf deiner Sub deklarierst du die Variablen,
    Dim VarAntworten As Variant

    Dim IntZufall As Integer

    Dim x As Integer, i As Integer, y As Integer, a As Integer

Dann ersetzt du in jedem If-Zweig, wo du bisher die Antwortmöglichkeiten direkt den Optionsfeldern zuweist, diese drei Zeilen einfach durch die Initialisierung des Arrays. natürlich mit den jeweilig richtigen Antwortmöglichkeiten, habe hier erstmal nur die Antworten für die erste Frage genommen
    VarAntworten = Array("Südamerika", "Asien", "Afrika")
Und dann bevor deine Sub beendet wird, fügst du den Rest des Quellcodes ein.
    [COLOR="Red"]i = 0[/COLOR]

    For x = UBound(VarAntworten) To 0 Step -1

        IntZufall = Int((x + 1) * Rnd)

        UserForm1.Controls(i).Caption = VarAntworten(IntZufall)

        VarAntworten(IntZufall) = ""

        If x = UBound(VarAntworten) Then

            a = 1

        Else: a = 0

        End If

        For y = 0 To x - a Step 1

            If VarAntworten(y) = "" Then

                VarAntworten(y) = VarAntworten(y + 1)

                VarAntworten(y + 1) = ""

            End If

        Next y

        i = i + 1

    Next x

Was außerdem noch zu beachten ist, die Initialisierung der Variable i (hier rot makiert) muss bei dir höchstwahrscheinlich angepasst werden. Welcher Wert dieser Variablen zugewiesen werden muss, erfährst du durch diese Funktion:
Sub CountControls()

    Dim con As Control

    Dim i As Integer

    i = 0

    For Each con In [COLOR="Red"]UserForm1[/COLOR].Controls

        Debug.Print i & " " & con.Name

        i = i + 1

    Next con

End Sub

Füg sie einfach in einem neuen Modul ein und pass auch hier den rot makierten Namen an, dort muss der Name deiner Userform rein.wenn du sie dann durchlaufen lässt, wird dir eine Liste der Steuerelemente deiner Userform angezeigt, ich hoffe inständig, dass die die drei Label zu den Optionsfelden hintereinander erstellt hast, dann suchst du dir einfach 'lblAntwortA' aus der Liste raus, die anderen beiden müssten dann ja danach kommen, und trägst die Zahl die davor steht einfach als Wert in der Variable i ein.

Falls du die drei Label nicht hintereinander erstellt, sonder dazwischen noch andere Steuerelemente, müsste es helfen, wenn du alle drei Label einmal löscht und neu erstellst, dann dürften sie am Ende der Liste auftauchen.

So ich hoffe mal ich habe nichts vergessen, es war alles so gut verständlich wie ich es hier geschildert habe und es funktioniert bei mir.

Mit freundlichen Grüßen Dragon8

Link zu diesem Kommentar
Auf anderen Seiten teilen

So es ist wieder Nacht, sodass ich nochmal weiter gemacht habe, da deine Abfrage, ob du Antwort nun richtig gewesen ist oder nicht, dadurch, dass die richtige Antwort nun ja zufällig gesetzt wird, nicht mehr funktioniert.

Habe dazu also nun auch noch was geschrieben,

    Dim VarLösungen As Variant 'Array aller richtigen Lösungen


    VarLösungen = Array("Afrika", "bis zu 280 Kg", "Kolibri", "in einer Hautfalte")

    BoolA = False


    If (optA.Value = True And lblAntwortA.Caption = VarLösungen(IntAntwort)) _

        Or (optB.Value = True And lblAntwortB.Caption = VarLösungen(IntAntwort)) _

        Or (optC.Value = True And lblAntwortC.Caption = VarLösungen(IntAntwort)) Then


        lblTabelle.Caption = "Glückwunscch"

        lblTabelle1.Caption = "Du hast recht." & vbCrLf & "Deine Antwort ist richtig die wie Folgt lautet:"

        lblA.Caption = CStr(VarLösungen(IntAntwort))

    Else

        lblTabelle.Caption = "Falsche Antwort"

        lblTabelle1.Caption = "Deine Antwort ist falsch." & vbCrLf & "Die richtige Antwort ist:"

        lblA.Caption = CStr(VarLösungen(IntAntwort))

    End If


    optA.Value = False

    optB.Value = False

    optC.Value = False

Das Einzige was du hier noch verändern müsstest, ist der Array mit den richtigen Antworten, dort müsstest noch alle in der richtigen Reihenfolge eintragen. Was weiterhin noch nachzutragen ist:
    Dim VarAntworten As Variant     'Array für die Antwortmöglichkeiten

    Dim IntZufall As Integer        'Zufallszahl

    Dim x As Integer, i As Integer, y As Integer, a As Integer  'Schleifenvariablen


    VarAntworten = Array("Südamerika", "Asien", "Afrika")

[COLOR="Red"]    IntAntwort = 0[/COLOR]


    i = 0

    For x = UBound(VarAntworten) To 0 Step -1

        IntZufall = Int((x + 1) * Rnd)

        UserForm1.Controls(i).Caption = VarAntworten(IntZufall)

        VarAntworten(IntZufall) = ""

        If x = UBound(VarAntworten) Then

            a = 1

        Else: a = 0

        End If

        For y = 0 To x - a Step 1

            If VarAntworten(y) = "" Then

                VarAntworten(y) = VarAntworten(y + 1)

                VarAntworten(y + 1) = ""

            End If

        Next y

        i = i + 1

    Next x

das ist nochmal der Code den ich dir gestern hier schon geschickt hatte. Nur die rotmakierte Stelle ist nachzutragen. die kommt einfach wie der Antworten-Array darüber mit in jeden If-Zweig, als Wert wird jedesmal der passende Indexwert zugewiesen, welchen die auch schon direkt bei der Abfrage von "cmdKLF" benutzt. Außerdem muss die Variable IntAntwort noch für alle Subs in der dieser Userform gültig deklariert werden.

Also einfach ganz oben über allen Subs "Dim IntAntwort As Integer" eintragen, dann dürfte alles so funktionieren.

Ich hoffe mal ich habe alles so hineinbekommen, was auch bei dir schon mit drin war, da ich deinen Code an dieser Stelle aber nicht so ganz verstanden hatte, könnte auch sein das noch was fehlt.

Und falls was unverständlich ist, kannst du natürlich einfach nachfragen, kein Problem.

MIt freundlichen Grüßen

Dragon8

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

So wie ich es verstanden habe:

In VarLösungen= die ganzen Antworten einfügen.....

----------------------------------------------------------

in Var Antworten= Alle Antwortmöglichkeiten für jede Frage

VarAntworten = Array("Südamerika", "Asien", "Afrika")

IntAntwort = 3 ' zb. Afrika ist die richtige Antwort

VarAntworten = Array("Kolibri","Schwalbe","Ibis")

IntAntwort = 1

VarAntworten = Array("die Jungtiere","die Männchen","die Weibchen")

IntAntwort = 2

usw.......

----------------------------------------------------------

Lieg ich da richtig oder habe ich das richtig verstanden?

Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

ne, so meinte ich das nicht.


Option Explicit

[COLOR="Red"]Dim IntAntwort As Integer[/COLOR]

[...]

Private Sub cmdKLF_Click(Index As Integer)

If cmdKLF(0) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\schimpanse.jpg")

imgBild.Visible = True

lblFrageKL = "Wo ist der Schimpanse zu Haus? "


[COLOR="red"]VarAntworten = Array("Südamerika", "Asien", "Afrika")

IntAntwort = 0[/COLOR]


End If

If cmdKLF(1) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\tiger.jpg")

imgBild.Visible = True

lblFrageKL = "Wie schwer wird ein männlicher Tiger? "


[COLOR="red"]VarAntworten = Array("bis zu 80 Kg","bis zu 180 Kg","bis zu 280 Kg")

IntAntwort = 1[/COLOR]


End If

If cmdKLF(2) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\ibis.jpg")

imgBild.Visible = True

lblFrageKL = "Welcher Vogel kann rückwärts fliegen? "


[COLOR="red"]VarAntworten = Array("Ibis", "Schwalbe", "Kolibri")

IntAntwort = 2[/COLOR]

End If

[...]

[COLOR="Red"] i = 0

    For x = UBound(VarAntworten) To 0 Step -1

        IntZufall = Int((x + 1) * Rnd)

        UserForm1.Controls(i).Caption = VarAntworten(IntZufall)

        VarAntworten(IntZufall) = ""

        If x = UBound(VarAntworten) Then

            a = 1

        Else: a = 0

        End If

        For y = 0 To x - a Step 1

            If VarAntworten(y) = "" Then

                VarAntworten(y) = VarAntworten(y + 1)

                VarAntworten(y + 1) = ""

            End If

        Next y

        i = i + 1

    Next x[/COLOR]

End Sub


Private Sub cmdStartKL_Click()

[COLOR="red"]    Dim VarLösungen As Variant 'Array aller richtigen Lösungen


    VarLösungen = Array("Afrika", "bis zu 280 Kg", "Kolibri", "in einer Hautfalte")

    BoolA = False


    If (optA.Value = True And lblAntwortA.Caption = VarLösungen(IntAntwort)) _

        Or (optB.Value = True And lblAntwortB.Caption = VarLösungen(IntAntwort)) _

        Or (optC.Value = True And lblAntwortC.Caption = VarLösungen(IntAntwort)) Then


        lblTabelle.Caption = "Glückwunscch"

        lblTabelle1.Caption = "Du hast recht." & vbCrLf & "Deine Antwort ist richtig die wie Folgt lautet:"

        lblA.Caption = CStr(VarLösungen(IntAntwort))

    Else

        lblTabelle.Caption = "Falsche Antwort"

        lblTabelle1.Caption = "Deine Antwort ist falsch." & vbCrLf & "Die richtige Antwort ist:"

        lblA.Caption = CStr(VarLösungen(IntAntwort))

    End If


    optA.Value = False

    optB.Value = False

    optC.Value = False[/COLOR]

End Sub

[...]


So meinte ich das eigentlich, alles rot maktierte ist das was ich an deinem Code verändert habe, und überall wo "[...]" steht habe ich einfach abgekürzt, die anderen oben in den IF-Zweigen müssen natürlich so fortlaufend in allein übernommen werden.

Jetzt verstanden?

Mit freundlichen Grüßen

Dragon8

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

ist das mit absicht das die Variablen nicht deklariert sin?

Bei UBound bekomme ich fehlermeldung das " Erwarte Array"

Hier der Code von mir aufgefüllt, wenn du mal drüberschast und kontrollierst ob ich nen Fehler drin habe....

Option Explicit

Dim IntAntwort As Integer

Dim VarAntworten As Integer


Private Sub cmdHauptKL_Click()

frmHaupt.Show

End Sub




Private Sub cmdKLF_Click(Index As Integer)

Dim i As Integer

Dim x As Integer



If cmdKLF(0) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\schimpanse.jpg")

imgBild.Visible = True

lblFrageKL = "Wo ist der Schimpanse zu Haus? "


VarAntworten = Array("Südamerika", "Asien", "Afrika")

IntAntwort = 0



End If

If cmdKLF(1) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\tiger.jpg")

imgBild.Visible = True

lblFrageKL = "Wie schwer wird ein männlicher Tiger? "


VarAntworten = Array("bis zu 80 Kg", "bis zu 180 Kg", "bis zu 280 Kg")

IntAntwort = 1



End If

If cmdKLF(2) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\ibis.jpg")

imgBild.Visible = True

lblFrageKL = "Welcher Vogel kann rückwärts fliegen? "


VarAntworten = Array("Ibis", "Schwalbe", "Kolibri")

IntAntwort = 2

End If



If cmdKLF(3) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\pinguin.jpg")

imgBild.Visible = True

lblFrageKL = "Wie brüten Kaiserpinguine ihr Ei aus? "


VarAntworten = Array("im Nest", "unter dem Flügel", "in einer Hautfalte")

IntAntwort = 3

End If



If cmdKLF(4) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\strauß.jpg")

imgBild.Visible = True

lblFrageKL = "Worin halten Strauße Rekorde? "


VarAntworten = Array("Sie können so schwer wie ein Tiger werden.", "Sie brüten von allen Vögeln die meisten Eier aus.", "Sie sind die schnellsten Zweibeiner.")

IntAntwort = 4

End If



If cmdKLF(5) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\rothirsch.jpg")

imgBild.Visible = True

lblFrageKL = "Wer darf bei den Rothirschen zuerst essen? "


VarAntworten = Array("die Jungtiere", "die Weibchen", "die Männchen")

IntAntwort = 5

End If



If cmdKLF(6) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\kaninchen.jpg")

imgBild.Visible = True

lblFrageKL = "Wie schnell kann ein flüchtender Hase werden?"


VarAntworten = Array("50 Stundenkilometer", "90 Stundenkilometer", "70 Stundenkilometer")

IntAntwort = 6

End If



If cmdKLF(7) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\storch.jpg")

imgBild.Visible = True

lblFrageKL = "Was frißt der Weißstorch?"


VarAntworten = Array("Knollen, Wurzeln, Frösche", "Heuschrecken, Körner, Grassamen", "Frösche, Mäuse, Regenwürmer")

IntAntwort = 7

End If



If cmdKLF(8) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\koala.jpg")

imgBild.Visible = True

lblFrageKL = "Was ist der Koala für ein Tier?"


VarAntworten = Array("ein Bär", "eine Raubkatze", "ein Beuteltier")

IntAntwort = 8

End If



If cmdKLF(9) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\schlange.jpg")

imgBild.Visible = True

lblFrageKL = "Wie lang können Schlangen werden?"


VarAntworten = Array("bis zu 2 Meter", "bis zu 5,5 Meter", "bis zu 9 Meter")

IntAntwort = 9

End If



If cmdKLF(10) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\echse.jpg")

imgBild.Visible = True

lblFrageKL = "Wann ändert das Chamäleon seine Farbe?"


VarAntworten = Array("Wenn es sich tarnen will.", "Wenn es sich paaren will.", "Wenn es Hunger oder Durst hat.")

IntAntwort = 10

End If



If cmdKLF(11) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\pferd.jpg")

imgBild.Visible = True

lblFrageKL = "Welches Geräusch macht das Pferd?"


VarAntworten = Array("Brüllen", "Röhren", "Wiehern")

IntAntwort = 11

End If



If cmdKLF(12) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\schneeeule.jpg")

imgBild.Visible = True

lblFrageKL = "Wie entdeckt die Eule nachts ihre Beute?"


VarAntworten = Array("mit der Nase", "mit den Augen", "mit den Ohren")

IntAntwort = 12

End If



If cmdKLF(13) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\giraffe.jpg")

imgBild.Visible = True

lblFrageKL = "Der Mensch hat 7 Halswirbel. Wieviele hat die Giraffe?"


VarAntworten = Array("18", "12", "7")

IntAntwort = 13

End If


' musste kürzen wegen zuviele zeichen fürs Forum



 i = 0

    For x = UBound(VarAntworten) To 0 Step -1

        IntZufall = Int((x + 1) * Rnd)

        UserForm1.Controls(i).Caption = VarAntworten(IntZufall)

        VarAntworten(IntZufall) = ""

        If x = UBound(VarAntworten) Then

            a = 1

        Else: a = 0

        End If

        For y = 0 To x - a Step 1

            If VarAntworten(y) = "" Then

                VarAntworten(y) = VarAntworten(y + 1)

                VarAntworten(y + 1) = ""

            End If

        Next y

        i = i + 1

    Next x

End Sub


Private Sub cmdStartKL_Click()

    Dim VarLösungen As Variant 'Array aller richtigen Lösungen


    VarLösungen = Array("Afrika", "bis zu 280 Kg", "Kolibri", "in einer Hautfalte", "Sie sind die schnellsten Zweibeiner.", "die Männchen", "70 Stundenkilometer", _

    "Frösche, Mäuse, Regenwürmer", "ein Beuteltier", "bis zu 9 Meter", "Wenn es Hunger oder Durst hat.", _

    "Wiehern", "mit den Ohren", "7", "Das Junge kriecht nach der Geburt selbst hinein.", "200 Jahren", _

    "wegen seiner bunten Färbung", "Der Gepard", "Der kleine Fuchs", "Kuckuck", "Für ihr Gedächtnis", _

    "Zum Riechen und Atmen", "ein Flusspferd", " 90 Km/h", "WOLFGANG", "der Keller", "der Pils", _

    "die Erdbeere", "der Trompeter", "die Zunge", "das Wasser", "der Hahn")

    BoolA = False


    If (optA.Value = True And lblAntwortA.Caption = VarLösungen(IntAntwort)) _

        Or (optB.Value = True And lblAntwortB.Caption = VarLösungen(IntAntwort)) _

        Or (optC.Value = True And lblAntwortC.Caption = VarLösungen(IntAntwort)) Then


        lblTabelle.Caption = "Glückwunscch"

        lblTabelle1.Caption = "Du hast recht." & vbCrLf & "Deine Antwort ist richtig die wie Folgt lautet:"

        lblA.Caption = CStr(VarLösungen(IntAntwort))

    Else

        lblTabelle.Caption = "Falsche Antwort"

        lblTabelle1.Caption = "Deine Antwort ist falsch." & vbCrLf & "Die richtige Antwort ist:"

        lblA.Caption = CStr(VarLösungen(IntAntwort))

    End If


    optA.Value = False

    optB.Value = False

    optC.Value = False

End Sub

Private Sub Form_Load()

'-----------------------------------------------------------

'Hier wird der Name von der InputBox Übergeben

Dim N As String

N = frmHaupt.lblName.Caption

lblNameKL.Caption = "Hallo " & N

lblNameKLÜ = "Beantworte die gestellten Fragen.Du hast immer 3 vordefinierte Antworten und nur eine" _

& " davon ist richtig." & vbCr & "Viel Spaß"

'-----------------------------------------------------------

End Sub

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

gut hast recht, habe ich total vergessen gehabt, das mit reinzusetzten, natürlich muss das Array noch deklariert werden, vor allem da du die Option "Explicit" benutzt.

dort wo du auch schon x und i deklarierst, muss auch nochmal noch die deklaration von VarAntworten hin, als Variant, also "Dim VarAntworten as Variant"

Was ich auch gerade gesehen habe, die hast es ganz oben als Integer deklariert, das muss weg, dort ganz oben darf nur IntAntworten deklariert werden.

Mit freundlichen Grüßen

Dragon8

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sorry wenn ich lästig erscheine aber wo das

"UserForm1.Controls(i).Caption = VarAntworten(intZufall)"

Muss da mein frmKinderL hin oder wie ist das gemeint.

Steh eucht im moment auf schlauch.

Zusatz.

Die lblAntwortA

lblAntwortB

lblAntwotC

sind nicht zu sehen. Diese stehen wie du im Bild oben sehen kannst immer neben der Optionsliste.

Da müssen die doch mit der VarAntworten zusammengefürt werden oder sonst sehe ich diese nicht..

Link zu diesem Kommentar
Auf anderen Seiten teilen

und hier natürlich auch die Lösung damit Ihr alle was davon habt:

Private Sub cmdKLF_Click(Index As Integer)

Dim i As Integer

Dim x As Integer

Dim VarAntworten As Variant

Dim intZufall As Integer

Dim a As Integer

Dim y As Integer




If cmdKLF(0) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\schimpanse.jpg")

imgBild.Visible = True

lblFrageKL = "Wo ist der Schimpanse zu Haus? "


VarAntworten = Array("Südamerika", "Asien", "Afrika")

IntAntwort = 0



End If

If cmdKLF(1) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\tiger.jpg")

imgBild.Visible = True

lblFrageKL = "Wie schwer wird ein männlicher Tiger? "


VarAntworten = Array("bis zu 80 Kg", "bis zu 180 Kg", "bis zu 280 Kg")

IntAntwort = 1



End If

If cmdKLF(2) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\ibis.jpg")

imgBild.Visible = True

lblFrageKL = "Welcher Vogel kann rückwärts fliegen? "


VarAntworten = Array("Ibis", "Schwalbe", "Kolibri")

IntAntwort = 2

End If



If cmdKLF(3) Then

imgBild.Picture = LoadPicture("C:\messagiero\denksport\kinderL\pinguine.jpg")

imgBild.Visible = True

lblFrageKL = "Wie brüten Kaiserpinguine ihr Ei aus? "


VarAntworten = Array("im Nest", "unter dem Flügel", "in einer Hautfalte")

IntAntwort = 3

End If

'[....usw...]


i = 70' dies war der Fehler den wir nicht gleich gefunden hatten.

    For x = UBound(VarAntworten) To 0 Step -1

        intZufall = Int((x + 1) * Rnd)

        frmKinderL.Controls(i).Caption = VarAntworten(intZufall)

        VarAntworten(intZufall) = ""

        If x = UBound(VarAntworten) Then

            a = 1

        Else: a = 0

        End If

        For y = 0 To x - a Step 1

            If VarAntworten(y) = "" Then

                VarAntworten(y) = VarAntworten(y + 1)

                VarAntworten(y + 1) = ""

            End If

        Next y

        i = i - 1

    Next x

End Sub

'-----------------------------------------------------------------

 Dim VarLösungen As Variant 'Array aller richtigen Lösungen

    Dim BoolA

    VarLösungen = Array("Afrika", "bis zu 280 Kg", "Kolibri")'[und weitere....]

    BoolA = False


    If (optA.Value = True And lblAntwortA.Caption = VarLösungen(IntAntwort)) _

        Or (optB.Value = True And lblAntwortB.Caption = VarLösungen(IntAntwort)) _

        Or (optC.Value = True And lblAntwortC.Caption = VarLösungen(IntAntwort)) Then


        lblTabelle1.Caption = "Glückwunscch"

        lblTabelle.Caption = "Du hast recht." & vbCrLf & "Deine Antwort ist richtig die wie Folgt lautet:"

        lblAnt.Caption = CStr(VarLösungen(IntAntwort))

    Else

        lblTabelle1.Caption = "Falsche Antwort"

        lblTabelle.Caption = "Deine Antwort ist falsch." & vbCrLf & "Die richtige Antwort ist:"

        lblAnt.Caption = CStr(VarLösungen(IntAntwort))

    End If


    optA.Value = False

    optB.Value = False

    optC.Value = False

Ein Dank an Dragon8:uli

Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...