Thema Datum  Von Nutzer Rating
Antwort
Rot Paramenterübergabe
17.01.2013 14:37:33 Flambo
NotSolved
18.01.2013 10:27:57 Holger
NotSolved
24.01.2013 00:22:07 Flambo
NotSolved
24.01.2013 09:31:53 Max
Solved
24.01.2013 12:54:54 Flambo
NotSolved

Ansicht des Beitrags:
Von:
Flambo
Datum:
17.01.2013 14:37:33
Views:
3104
Rating: Antwort:
  Ja
Thema:
Paramenterübergabe

Der folgende Code generiert beim öffnen der UserForm eine Frage und vier verschiedene Antworten, von denen mind. eine richtig ist

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Private Sub UserForm_Initialize()
Dim Stadtteil As Integer
Dim ganzerSatz As String
Dim Straße1 As Integer
Dim Straße2 As Integer
Dim Straße3 As Integer
Dim Straße4 As Integer
Const Untergrenze As Integer = 2
Const Obergrenze As Integer = 707
    
 
Randomize Timer
    
    
Stadtteil = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
ganzerSatz = "Welche der nachfolgenden Straßen gehören zu dem Stadtteil " & Worksheets("Tabelle2").Cells(Stadtteil, "C") & "?"
TextBox1.Text = ganzerSatz
     
     
Do
    Do
        Straße1 = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
        CheckBox1.Caption = Worksheets("Tabelle2").Cells(Straße1, "B")
 
        Straße2 = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
        CheckBox2.Caption = Worksheets("Tabelle2").Cells(Straße2, "B")
 
        Straße3 = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
        CheckBox3.Caption = Worksheets("Tabelle2").Cells(Straße3, "B")
 
        Straße4 = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
        CheckBox4.Caption = Worksheets("Tabelle2").Cells(Straße4, "B")
    Loop Until Straße1 <> Straße2 <> Straße3 <> Straße4
Loop Until Worksheets("Tabelle2").Cells(Straße1, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C") Or Worksheets("Tabelle2").Cells(Straße2, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C") Or Worksheets("Tabelle2").Cells(Straße3, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C") Or Worksheets("Tabelle2").Cells(Straße4, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C")
End Sub


Anschließend soll beim Click des Buttons abgeklärt werden, ob die Antwort richtig ist.
- Wenn alle möglichen Antwort richtig ausgewählt wurden erhöht sich der Wert in der TextBox7 um 5
- Ist mind. eine Antwort aber nicht alle richtig erhöht sich der Wert in der TextBox7 um 2
- Ist keine Antwort richtig ausgewählt worden gibt es keine Punkte.

Im folgenden Code habe ich versucht dies umzusetzen

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
Private Sub CommandButton1_Click()
Static cnt As Long
Dim Stadtteil As Integer
Dim ganzerSatz As String
Dim Straße1 As Integer
Dim Straße2 As Integer
Dim Straße3 As Integer
Dim Straße4 As Integer
Const Untergrenze As Integer = 2
Const Obergrenze As Integer = 707
Dim x As Integer
Dim Zähler As String
 
If cnt >= 5 Then GoTo Neustart
 
If CheckBox1.Value = True Or CheckBox2.Value = True Or CheckBox3.Value = True Or CheckBox4.Value = True Then
If Worksheets("Tabelle2").Cells(Straße1, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C") Then
        If CheckBox1.Value = True Then
CB2:
            If Worksheets("Tabelle2").Cells(Straße2, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C") Then
                If CheckBox2.Value = True Then
CB3:
                    If Worksheets("Tabelle2").Cells(Straße3, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C") Then
                        If CheckBox3.Value = True Then
CB4:
                            If Worksheets("Tabelle2").Cells(Straße4, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C") Then
                                If CheckBox4.Value = True Then
                                    TextBox7.Text = TextBox7.Text + 5
                                Else
                                    TextBox7.Text = TextBox7.Text + 2
                                End If
                            End If
                            TextBox7.Text = TextBox7.Text + 5
                        Else
                            TextBox7.Text = TextBox7.Text + 2
                        End If
                    Else: GoTo CB4
                    End If
                    TextBox7.Text = TextBox7.Text + 5
                Else
                    TextBox7.Text = TextBox7.Text + 2
                End If
            Else: GoTo CB3
            End If
            TextBox7.Text = TextBox7.Text + 5
        Else
            TextBox7.Text = TextBox7.Text + 2
        End If
    Else: GoTo CB2
    End If
     
 
    CheckBox1.Value = False
    CheckBox2.Value = False
    CheckBox3.Value = False
    CheckBox4.Value = False
     
 
    Randomize Timer
     
    Stadtteil = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
    ganzerSatz = "Welche der nachfolgenden Straßen gehören zu dem Stadtteil " & Worksheets("Tabelle2").Cells(Stadtteil, "C") & "?"
    TextBox1.Text = ganzerSatz
    
    
    Do
        Do
            Straße1 = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
            CheckBox1.Caption = Worksheets("Tabelle2").Cells(Straße1, "B")
 
            Straße2 = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
            CheckBox2.Caption = Worksheets("Tabelle2").Cells(Straße2, "B")
 
            Straße3 = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
            CheckBox3.Caption = Worksheets("Tabelle2").Cells(Straße3, "B")
 
            Straße4 = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
            CheckBox4.Caption = Worksheets("Tabelle2").Cells(Straße4, "B")
        Loop Until Straße1 <> Straße2 <> Straße3 <> Straße4
    Loop Until Worksheets("Tabelle2").Cells(Straße1, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C") Or Worksheets("Tabelle2").Cells(Straße2, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C") Or Worksheets("Tabelle2").Cells(Straße3, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C") Or Worksheets("Tabelle2").Cells(Straße4, "C") = Worksheets("Tabelle2").Cells(Stadtteil, "C")
 
Else
    UserForm10.Show
    cnt = cnt - 1
End If
Neustart:
cnt = cnt + 1
 
If cnt <= 4 Then
    x = cnt + 1
    Zähler = "Frage " & x & " von 5"
    Label4.Caption = Zähler
End If
 
If cnt = 5 Then
    CommandButton1.Caption = "Noch mal?"
    CommandButton2.Caption = "Punkte einlösen"
     
    CheckBox1.Caption = ""
    CheckBox1.Enabled = False
     
    CheckBox2.Caption = ""
    CheckBox2.Enabled = False
     
    CheckBox3.Caption = ""
    CheckBox3.Enabled = False
     
    CheckBox4.Caption = ""
    CheckBox4.Enabled = False
     
    TextBox1.Text = ""
End If
If cnt = 6 Then
    Unload Me
    Unload UserForm8
    UserForm8.Show
End If
End Sub


Ich bin mir nicht genau sicher wo der Fehler liegt, aber ich gehe davon aus, dass die bei Sub UserForm_Initialize() generierten Anfangswerte nicht mit zu Sub CommandButton1_Click übernommen werden.
Alles andere funktioniert, bis auf die If-Verschachtelung zur Ermittlung der Punkte.
Der Fehler Bezieht sich auf Zeile 17 von Code2 (CommandButton_Click) und lautet: "Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler"

Vielen Dank schon mal im Vorraus!


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Paramenterübergabe
17.01.2013 14:37:33 Flambo
NotSolved
18.01.2013 10:27:57 Holger
NotSolved
24.01.2013 00:22:07 Flambo
NotSolved
24.01.2013 09:31:53 Max
Solved
24.01.2013 12:54:54 Flambo
NotSolved