Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen

OptionButton: farbliche Auswertung


Betrifft: OptionButton: farbliche Auswertung von: Markus
Geschrieben am: 06.12.2016 18:29:20

Liebes Forum,

ich habe mir anhand eines Youtube Videos (Kanal: Balders Welt) ein kleines "Quiz" gebastelt. Eine Änderung würde ich gerne vornehmen, bei der ich mit meinen VBA-Kenntnissen nicht weiterkomme.

Hier erstmal der VBA-Code:

Meine UserForm besteht momentan aus 2 Commandbuttons.

Private Sub CommandButton2_Click()
' Schließt die UserForm
    quit = 1
    Unload Me
End Sub

Private Sub UserForm_Initialize()

    UserForm1.Caption = "Fragen" & i & "von 5"
    Label1 = Sheets(1).Cells(a, 1)
    
OptionButton1.Caption = Sheets(1).Cells(a, 2)
OptionButton2.Caption = Sheets(1).Cells(a, 3)
OptionButton3.Caption = Sheets(1).Cells(a, 4)

End Sub

Private Sub CommandButton1_Click()
'Wertet den OptionButton aus und färbt ggf. die falsche Antwort rot ein 
'Die nächste Frage wird nur dann eingeblendet, wenn die richtige Antwort ausgewählt wird

If OptionButton1 = True And Sheets(1).Cells(a, 5) = 1 Or OptionButton2 = True And Sheets(1). _
Cells(a, 5) = 2 Or OptionButton3 = True And Sheets(1).Cells(a, 5) = 3 Then

Unload Me

Else

If OptionButton1 = True Then
OptionButton1.ForeColor = vbRed
End If

If OptionButton2 = True Then
OptionButton2.ForeColor = vbRed
End If

If OptionButton3 = True Then
OptionButton3.ForeColor = vbRed
End If

fehler = fehler + 1
End If

End Sub

Mein Anliegen: Ist es möglich, dass man mit dem Button ("Auswertung" - momentan CommandButton1) auf die UserForm die beiden falschen Antworten rot einfärbt (wie bisher) und die richtige Antwort grün? Der gesetzte OptionButton soll dabei bestehen bleiben. Es soll noch nicht die nächste Frage aufgerufen werden, auch wenn die richtige Antwort gegeben wurde.

und anschließend noch einen Button "Weiter" welcher die nächste Frage aufruft.

Vielen Dank euch.

  

Betrifft: AW: OptionButton: farbliche Auswertung von: fcs
Geschrieben am: 07.12.2016 06:03:25

Hallo Markus,

sicher ist das möglich.

Du muss dann in diesem Abschnitt

If OptionButton1 = True And Sheets(1).Cells(a, 5) = 1 Or OptionButton2 = True And Sheets(1). _
Cells(a, 5) = 2 Or OptionButton3 = True And Sheets(1).Cells(a, 5) = 3 Then

Unload Me

Else

die Zeile
Unload Me
ersetzen durch
Me.CommandButton3.Enabled = True

CommandButton3 wäre dann die "Weiter"-Schaltfläche.
In UserForm_Initialize fügst du die Zeile ein:
Me.CommandButton3.Enabled = False

Mit der "Weiter"-Schaltfläche startest du dann das Makro, das die Daten zur nächsten Frage lädt.
Also Fragen-Zähler um 1 erhöhen und Daten aus Sheet(1) zur nächsten Frage den Steuerelementen zuweisen analog zu der Initialize-Prozedur. Am Ende des Makros musst du dann noch die Farben der Optionsschaltflächen zurücksetzen und die "Weiter"-Schaltfläche deaktivieren.

LG
Franz


  

Betrifft: AW: OptionButton: farbliche Auswertung von: Markus
Geschrieben am: 07.12.2016 19:55:18

Hallo Franz,

erstmal Danke für deine Hilfe - habe heute Abend versucht deine Worte umzusetzen, jedoch bekomme ich es nicht hin. Wäre sehr nett, wenn du mir da helfen kannst.

Hier der komplette Code (wie gesagt ist 1:1 aus dem YouTube Video übernommen):

Modul, welches die Fragen zufällig auswählt

Global a, i, fehler, quit As Integer

Sub Fragen()

Dim y(1 To 5), mini, temp As Integer
fehler = 0
quit = 0
For i = 1 To 5
mini = WorksheetFunction.Min(Sheets(1).Columns(6))
Do
temp = 0
a = Int(Rnd * 10) + 1
For j = 1 To 5
If a = y(j) Then
temp = 1
End If

Next
If Sheets(1).Cells(a, 6) - mini >= 2 Then
temp = 1
End If


Loop Until temp = 0
Sheets(1).Cells(a, 6) = Sheets(1).Cells(a, 6) + 1
y(i) = a
UserForm1.Show
If quit = 1 Then

Exit For
End If
Next

End Sub
UserForm:

Private Sub CommandButton2_Click()
    quit = 1
    Unload Me
End Sub

Private Sub UserForm_Initialize()

Me.CommandButton3.Enabled = False

    UserForm1.Caption = "Fragen" & i & "von 5"
    Label1 = Sheets(1).Cells(a, 1)
    
OptionButton1.Caption = Sheets(1).Cells(a, 2)
OptionButton2.Caption = Sheets(1).Cells(a, 3)
OptionButton3.Caption = Sheets(1).Cells(a, 4)

End Sub

Private Sub CommandButton1_Click()

If OptionButton1 = True And Sheets(1).Cells(a, 5) = 1 Or OptionButton2 = True And Sheets(1). _
Cells(a, 5) = 2 Or OptionButton3 = True And Sheets(1).Cells(a, 5) = 3 Then

Me.CommandButton3.Enabled = True

Else

If OptionButton1 = True Then
OptionButton1.ForeColor = vbRed
End If

If OptionButton2 = True Then
OptionButton2.ForeColor = vbRed
End If

If OptionButton3 = True Then
OptionButton3.ForeColor = vbRed
End If

fehler = fehler + 1
End If

End Sub
Bei diesem Punkt weiß ich nicht weiter :
Also Fragen-Zähler um 1 erhöhen und Daten aus Sheet(1) zur nächsten Frage den Steuerelementen zuweisen analog zu der Initialize-Prozedur. Am Ende des Makros musst du dann noch die Farben der Optionsschaltflächen zurücksetzen und die "Weiter"-Schaltfläche deaktivieren.

Danke dir.


  

Betrifft: AW: OptionButton: farbliche Auswertung von: fcs
Geschrieben am: 08.12.2016 00:05:52

Hallo Markus,

lade deine Datei doch mit ggf. anonymisierten Beispiel-Daten hoch.
Ich hab keine Lust mich durch das Gewusel von Makros zu wühlen und ggf. Test-Daten nachzubauen.

LG
Franz


  

Betrifft: AW: OptionButton: farbliche Auswertung von: Markus
Geschrieben am: 08.12.2016 18:18:24

Hallo Franz,

anbei die Beispieldatei - danke im Voraus für deine Mühe!

https://www.herber.de/bbs/user/109935.xlsm


  

Betrifft: AW: OptionButton: farbliche Auswertung von: fcs
Geschrieben am: 08.12.2016 23:22:38

Hallo Markus,

hier deine Datei mit angepastem Makro "Quiz" und Anpassung/Ergänzung der Makros im Userform.
https://www.herber.de/bbs/user/109944.xlsm

Im Makro "Quiz" wird jetzt ein Datenarray mit den 5 Zeilennumern der Fragen per Zufallsgenerator gefüllt. Dann das Userform angezeigt.

Das Userform wird nur einmal gestartet und die Fragenliste innerhalb des Userforms abgearbeitet.
Die Schaltfläche "Bestätigen / Weiter" wechselt ihren Text.
Bei richtger Antwort --> "Weiter".
Bei Klick auf "Weiter" werden die nächste Frage geladen, die Options-Schaltflächen zurückgesetzt, und der Text der Schaltfläche auf "Bestätigen" geändert.

Um die Augen zu schonen hab ich die Schriftgröße für die Steuerelemente vergrößert.

Gruß
Franz


  

Betrifft: AW: OptionButton: farbliche Auswertung von: Markus
Geschrieben am: 08.12.2016 23:46:29

Hallo Franz,

echt überragend - sieht super aus :)

Vielen Dank!


Beiträge aus den Excel-Beispielen zum Thema "OptionButton: farbliche Auswertung"