HERBERS Excel-Forum - die Beispiele

Thema: Einfaches Quiz mit 2 vorgegebenen Antworten

Home

Gruppe

Dialog

Problem

In einem einfachen Quiz sollen Fragen mit je 2 vorgegebenen Antworten beantwortet werden. Die vorgegebenenAntworten werden über einen Zufallsgenerator auf 2 Schaltflächen verteilt.

Lösung
Geben Sie den Ereigniscode in das Klassenmodul der UserForm ein.
ClassModule: frmQuiz

Private Sub cmdAnswer1_Click()
   Call ClickAnswer(cmdAnswer1)
End Sub

Private Sub cmdAnswer2_Click()
   Call ClickAnswer(cmdAnswer2)
End Sub

Private Sub ClickAnswer(cmd As Control)
   Dim rng As Range
   Dim iCol As Integer
   lblAnswer.Caption = cmd.Caption
   With ThisWorkbook.Worksheets("Fragen")
      Set rng = .Columns("B:C").Find(cmd.Caption, lookat:=xlWhole, LookIn:=xlValues)
      .Cells(spnQuiz.Value, 4).Value = rng.Column
   End With
   If spnQuiz.Value = 20 Then
      spnQuiz.Value = 1
   Else
      spnQuiz.Value = spnQuiz.Value + 1
   End If
End Sub

Private Sub cmdCancel_Click()
   Unload Me
End Sub

Private Sub cmdCompute_Click()
   Dim wks As Worksheet
   Dim iCount As Integer, iTrue As Integer, iAnswer As Integer
   Dim sTxt As String
   Set wks = ThisWorkbook.Worksheets("Fragen")
   iCount = WorksheetFunction.CountA(wks.Columns(1))
   iAnswer = WorksheetFunction.CountA(wks.Columns(4))
   iTrue = WorksheetFunction.CountIf(wks.Columns(4), 2)
   If iAnswer = 0 Then
      Beep
      MsgBox "Es wurde noch keine Frage beantwortet!"
      Exit Sub
   End If
   sTxt = "Anzahl Fragen beantwortet:" & vbLf
   sTxt = sTxt & iAnswer & " von "
   sTxt = sTxt & iCount & " = "
   sTxt = sTxt & Format(iAnswer / iCount, "0.00%") & vbLf & vbLf
   sTxt = sTxt & "Anteil richtige Antworten: " & vbLf
   sTxt = sTxt & iTrue & " von " & iAnswer & " = "
   sTxt = sTxt & Format(iTrue / iAnswer, "0.00%")
   MsgBox sTxt
End Sub

Private Sub cmdReset_Click()
   ThisWorkbook.Worksheets("Fragen").Columns(4).ClearContents
End Sub

Private Sub spnQuiz_Change()
   Dim wks As Worksheet
   Dim iCol As Integer, iSpan As Integer
   Set wks = ThisWorkbook.Worksheets("Fragen")
   iSpan = spnQuiz.Value
   lblNo.Caption = "Nr.: " & iSpan
   lblQuestion.Caption = wks.Cells(iSpan, 1).Value
   Randomize
   iCol = Int((2 * Rnd) + 1)
   If iCol = 1 Then
      cmdAnswer1.Caption = wks.Cells(iSpan, iCol + 1).Value
      cmdAnswer2.Caption = wks.Cells(iSpan, iCol + 2).Value
   Else
      cmdAnswer1.Caption = wks.Cells(iSpan, iCol + 1).Value
      cmdAnswer2.Caption = wks.Cells(iSpan, iCol).Value
   End If
   If Not IsEmpty(wks.Cells(iSpan, 4)) Then
      lblAnswer.Caption = wks.Cells(iSpan, wks.Cells(iSpan, 4).Value)
   Else
      lblAnswer.Caption = ""
   End If
End Sub

Private Sub UserForm_Initialize()
   Dim wks As Worksheet
   Set wks = ThisWorkbook.Worksheets("Fragen")
   With spnQuiz
      .Min = 1
      .Max = wks.Range("A1").CurrentRegion.Rows.Count
      .Value = 1
      wks.Columns(4).ClearContents
   End With
End Sub
StandardModule: basMain

Sub CallForm()
   frmQuiz.Show
End Sub

Sub ShowQuestions()
   Dim wks As Worksheet
   Dim sPW As String
   Set wks = ThisWorkbook.Worksheets("Fragen")
   If wks.Visible = xlSheetVisible Then
      wks.Visible = xlSheetVeryHidden
      Exit Sub
   End If
   sPW = InputBox("Passwort:", , "Admin")
   If sPW = "" Then Exit Sub
   If sPW <> "Admin" Then
      Beep
      MsgBox "Sorry, keine Zugangsberechtigung!"
   Else
      wks.Visible = xlSheetVisible
   End If
End Sub

Beiträge aus dem Excel-Forum zu den Themen Dialog und SpinButton

xlDialogInsertHyperlink.show Arbeitmappen über Dialogfeld zusammen fassen
5.0 Dialog Spinbutton in UF und Textbox
Speichern unter Dialog in Word aufrufen inkl. Pfad Druckerdialog
Dateityp im "Speichern unter"-Dialog vorgeben Makro stoppen, wenn Excel-Dialog?
xlDialogOpen anpassen Klick in definierten Rangebereich startet Dialog
xlDialogOpen bei Excel 2007 funzt nicht FileDialog inkl. Anklicken von Desktop, Eigene D.
Grösse Dialogfenster der InputBox SpinButton Uhrzeit
Dialogfeld unterdrücken Dialog "permanently delete sheets" unterbinden
Makroaufruf bei Wertänderung durch SpinButton Filter über Spinbutton
Format-Dialog funktioniert nicht mehr Dialog "Verknüpfung aktualisieren"
Ordnerdialog und Dateidialog Ordnerdialog und dateidialog
Ordnerdialog und Dateidialog Filedialog
Spinbutton.Value Herber/Beispiele/Dialoge/Checkbox/137601
Bilder bei Click im Dialogfeld Suchdialog über VBA aufrufen
mit Wert aus Combobox Dialog öffnen Diagramm als Grafik mit Speicherdialog exportieren
Dialogfenster zum kopieren FileDialog-Objekt unter O2k
Abrage von Dialogfeldargumenten Datei Auswählen Dialog (Application.FileDialog)
xlDialogOpen/FindFile ohne Open Dialogfeld zum pdf öffnen
Spinbutton Dialogfeld schließen, wenn Benutzer nichts eingibt
Spinbutton / Scrollarea Spinbutton
Problem mit ApplicationDialogs Das Dialogfeld "sortieren" aufrufen?
Keine Dialogbox bei SaveAs SpinButton
Dialogbox SpinButton - wenn max dann von vorne
Bei xlDialogSaveAs Dateinamen vorgeben Spinbutton
Blattauswahldialog... speichern unter dialogbox problem