karolus hat geschrieben: ↑Sa 15. Jun 2024, 22:23
Einbuchstabige Symbole sind meistens schlecht, ein l als Symbol ist aber beschissen schlecht, weil es leicht mit I (GROSSES i) oder gar mit der 1 (eins ) verwechselt werden kann
Ok, aber das scheint hier nicht das Problem zu sein.
Code: Alles auswählen
Sub Main
MsgBox CC(1)
End Sub
Function CC(x As Long) As String
Dim s1 As String
If x <= 0 Then
s1 = "x <= 0"
Else If x > 1 Then
s1 = "x > 1"
Else
s1 = "Else"
End If
MsgBox s1
CC = s1
End If
End Function
karolus hat geschrieben: ↑Sa 15. Jun 2024, 22:23
In deiner Funktion gibts zwei
if…then ergo müssen da auch zwei
end ifs sein!
Das "If x > 1 Then" ist aber Teil eines "Else If x > 1 Then" und dieses Konstrukt hat doch laut Hilfe
Code: Alles auswählen
If condition Then
statements
[{ElseIf|Else If} expression Then
statements]
[Else
statements]
{EndIf|End If}
nur ein End If. Es ist kein weiterer If ... Then Block innerhalb eines statements eines äußeren If ... Then Blocks und es sind auch keine hintereinandergeschalteten If ... Then Blocks, oder überseh ich da was?
Außerdem habe ich inzwischen entdeckt, dass alles wie erwartet geht, wenn man das Leerzeichen zwischen Else und IF im Else If ... Then löscht.
Code: Alles auswählen
Function CC(x As Long) As String
Dim s1 As String
If x <= 0 Then
s1 = "x <= 0"
ElseIf x > 1 Then
s1 = "x > 1"
Else
s1 = "Else"
End If
MsgBox s1
CC = s1
End Function
Es scheint, als wäre die Behauptung aus der Hilfe "Instead of Else If you can write ElseIf, ..." falsch.
karolus hat geschrieben: ↑Sa 15. Jun 2024, 22:23
Du solltest aber sowas gleich mit
select case ……end select erschlagen:
Danke. Das hab ich im Produktivcode gemacht, weil hier keiner Zeit hat, bis ich meine akademischen Rätsel löse. Trotzdem verunsichert mich das.