cosimocaputo Geschrieben 31. Juli 2006 Geschrieben 31. Juli 2006 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: 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 Zitieren
Dragon8 Geschrieben 1. August 2006 Geschrieben 1. August 2006 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 Zitieren
cosimocaputo Geschrieben 1. August 2006 Autor Geschrieben 1. August 2006 Danke erst einmal für die ausführliche Antwort. Werde mir den Code anschauen und dann kann ich mich dazu äusern ob ich Ihn verstanden habe oder nicht. Fragen werden bestimmt folgen... Gruß Zitieren
Dragon8 Geschrieben 1. August 2006 Geschrieben 1. August 2006 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 Zitieren
cosimocaputo Geschrieben 2. August 2006 Autor Geschrieben 2. August 2006 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ß Zitieren
Dragon8 Geschrieben 2. August 2006 Geschrieben 2. August 2006 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 Zitieren
cosimocaputo Geschrieben 2. August 2006 Autor Geschrieben 2. August 2006 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 Zitieren
Dragon8 Geschrieben 2. August 2006 Geschrieben 2. August 2006 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 Zitieren
cosimocaputo Geschrieben 2. August 2006 Autor Geschrieben 2. August 2006 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.. Zitieren
Dragon8 Geschrieben 3. August 2006 Geschrieben 3. August 2006 Also ich wollte nur noch anmerken, dass Problem wurde nun außerhalb gelöst, da es so einfacher war, als alles einzeln hier im Forum zu posten. Problem ist also nun gelöst. Zitieren
cosimocaputo Geschrieben 3. August 2006 Autor Geschrieben 3. August 2006 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ß Zitieren
Empfohlene Beiträge
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.