Nachtrag
09.01.2006 19:11:10
Andi
Hi nochmal,
hatte grad Zeit und Lust und hab das ganze noch ein wenig aufgebohrt;
die Vokabeln haben jetzt eine Priorität zwischen 1 und 5 mit der die Häufigkeit festgelegt wird, wie oft sie durchschnittlich drankommen. Bei falscher Eingabe erhöht sich die Priorität um 1, bei richtiger Eingabe verringert sie sich um 1. Neu eingegebene Vokabeln haben die Priorität 3.
Das ganze sieht so aus:
Private Sub CommandButton1_Click()
Dim spalte As Integer
Dim a As Long
Dim b As Long
Dim zeile As Integer
Dim Antwort As String
b = 0
spalte = Int(Rnd() * 2) + 1
a = Int(Rnd() * Application.WorksheetFunction.Sum(Range("C:C"))) + 1
For zeile = 1 To Range("C65536").End(xlUp).Row
b = b + Cells(zeile, 3).Value
If b >= a Then Exit For
Next zeile
Antwort = InputBox("Bitte die Übersetzung von" & Chr(10) & Cells(zeile, spalte) & Chr(10) & "eingeben:")
Select Case spalte
Case 1
If Antwort = Cells(zeile, 2).Value Then
MsgBox "richtig"
If Cells(zeile, 3).Value > 1 Then Cells(zeile, 3).Value = Cells(zeile, 3).Value - 1
Else
MsgBox "Falsch" & Chr(10) & "Die richtige Antwort lautet:" & Chr(10) & Cells(zeile, 2).Value
If Cells(zeile, 3).Value < 5 Then Cells(zeile, 3).Value = Cells(zeile, 3).Value + 1
End If
Case 2
If Antwort = Cells(zeile, 1).Value Then
MsgBox "richtig"
If Cells(zeile, 3).Value > 1 Then Cells(zeile, 3).Value = Cells(zeile, 3).Value - 1
Else
MsgBox "Falsch" & Chr(10) & "Die richtige Antwort lautet:" & Chr(10) & Cells(zeile, 1).Value
If Cells(zeile, 3).Value < 5 Then Cells(zeile, 3).Value = Cells(zeile, 3).Value + 1
End If
End Select
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 Then Target.Offset(0, 2).Value = 3
Application.EnableEvents = True
End Sub
Schönen Gruß,
Andi