Warum geht dieser VBA-Code nicht?
Kann man keine If-Anweisungen in If-Anweisungen packen oder wieso geht der Code nicht?
Als Fehlermeldung kommt "Else ohne If" und das Else if ganz links am Rand wird markiert.
Sub grapheneigenschaften01()
Dim dbl_x1 As Double
Dim dbl_x2 As Double
Dim dbl_x3 As Double
Dim dbl_x4 As Double
dbl_x1 = InputBox("Geben Sie den x-Wert an: ") 'Einlesen des x-Wertes der Funktion
dbl_x2 = InputBox("Geben Sie den Funktionswert f(" & dbl_x1 & ") an: ") 'Einlesen des Funktionswertes einer Funktion
MsgBox ("Der Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") liegt auf dem Graphen") 'Ausgabe einer Nachricht, welche einen Punkt auf dem Graphen ausgibt
dbl_x3 = InputBox("Geben Sie den Wert der 1. Ableitung f'(" & dbl_x1 & ") an") ' Einlesen des Wertes der 1. Ableitung
If dbl_x3 < 0 Then
MsgBox ("In dem Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist der Graph streng monoton fallend")
dbl_x4 = InputBox("Geben Sie den Wert der 2. Ableitung f''(" & dbl_x1 & ") an: ")
If dbl_x4 < 0 Then MsgBox ("In dem Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist der Graph rechtsgekrümmt")
ElseIf dbl_x4 = 0 Then MsgBox ("Der Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist ein Wendepunkt")
Else
MsgBox ("In dem Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist der Graph linksgekrümmt")
End If
ElseIf dbl_x3 = 0 Then
MsgBox ("Der Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist ein Extremwert")
dbl_x4 = InputBox("Geben Sie den Wert der 2. Ableitung f''(" & dbl_x1 & ") an: ")
If dbl_x4 < 0 Then MsgBox ("Der Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist ein Hochpunkt und der Graph ist an dieser Stelle rechtsgekrümmt")
ElseIf dbl_x4 = 0 Then MsgBox ("Der Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist ein Terrassenpunkt")
Else
MsgBox ("Der Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist ein Tiefpunkt und der Graph ist an dieser Stelle linksgekrümmt")
End If
Else
MsgBox ("In dem Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist der Graph streng monoton steigend")
dbl_x4 = InputBox("Geben Sie den Wert der 2. Ableitung f''(" & dbl_x1 & ") an: ")
If dbl_x4 < 0 Then MsgBox ("In dem Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist der Graph rechtsgekrümmt")
ElseIf dbl_x4 = 0 Then MsgBox ("Der Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist ein Wendepunkt")
Else
MsgBox ("In dem Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist der Graph linksgekrümmt")
End If
End If
End Sub
Füge das doch bitte nochmal als Code ein, keiner hat lust das abzutippen.
Wollte ich vorhin machen. Das sah dann aber so komisch zusammengequetscht aus. Aber anscheinend ist das nur vor dem Senden so. Jetzt passts ja :)
2 Antworten
Wenn ich mich noch richtig erinnere unterscheidet VBA, ob du das ganze if in einer Zeile machst, oder über mehrere Zeilen machst.
Also wenn du z.B. das hier machst:
If dbl_x4 < 0 Then MsgBox ("In dem Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist der Graph rechtsgekrümmt")
dann denkt VBA, dass du das gesamte If in einer Zeile zusammenfasst und und ordnet das ElseIf dann dem übergeordneten If zu.
Also kurz gesagt: Probier mal, ob es funktioniert, wenn du grundsätzlich nach einem "Then" eine neue Zeile anfängst.
Das habe ich vorgestern auch noch ausprobiert und es hat funktioniert. Trotzdem danke für deine Antwort, denn sie war goldrichtig.
MsgBox ("Der Punkt P(" & dbl_x1 & "|" & dbl_x2 & ") ist ein Tiefpunkt und der Graph ist an dieser Stelle linksgekrümmt")
End If
Else
Du machst das erste "IF" mit "End If" vor dem Else zu (würde ich jetzt mal auf Anhieb tippen).
Aber warum? Das macht doch kein Sinn, weil ich ja ein neues if aufgemacht habe ^^