Warum geht dieser VBA-Code nicht?


11.01.2023, 23:56
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 


Kiboman  11.01.2023, 23:48

Füge das doch bitte nochmal als Code ein, keiner hat lust das abzutippen.

leon1231223423 
Fragesteller
 11.01.2023, 23:58

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

Vom Fragesteller als hilfreich ausgezeichnet

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.

leon1231223423 
Fragesteller
 14.01.2023, 18:49

Das habe ich vorgestern auch noch ausprobiert und es hat funktioniert. Trotzdem danke für deine Antwort, denn sie war goldrichtig.

0
       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).

Leonmensch  12.01.2023, 07:10

Aber warum? Das macht doch kein Sinn, weil ich ja ein neues if aufgemacht habe ^^

0