Hallo Heiko,
steht schon auf NEW:
https://bugs.documentfoundation.org/show_bug.cgi?id=173360#c2
Grüße
Hans-Werner ;-))
------ Originalnachricht ------
Von "Heiko" <[email protected]>
An [email protected]
Datum 01.09.2026 13:33:35
Betreff Re: [de-users] Re: LibreOffice Calc Basic: Laufzeitfehler bei
'Return' nach 'On [var] GoSub [marke ...]'
Hallo Hans,
ich kann den Fehler reproduzieren, sowohl in 26.2.x und 26.8.x.
Selbst das in der Online-Hilfe abgebildete Beispiel funktioniert nicht (mehr)
korrekt.
(Quelle:
https://help.libreoffice.org/latest/de/text/sbasic/shared/03090303.html).
Vermutlich wird "On ... GoSub" das "GoSub" vom Basic-Interpreter fälschlich wie "On
... GoTo" behandelt.
Das riecht schwer nach einem Bug. So etwas hat es für "On ... GoSub" leider
schon gegeben ( https://bugs.documentfoundation.org/show_bug.cgi?id=160321 ), allerdings
in etwas anderer Art.
Ich habe das 'mal als neuen Fehler gemeldet:
https://bugs.documentfoundation.org/show_bug.cgi?id=173360
Vielleicht kann das jemand aus der Liste auch nachvollziehen und im Bugzilla
"confirmen".
VG Heiko
Am 01.09.26 um 11:10 schrieb Hans Lintzen:
Hallo zusammen,
sehr herzlichen Dank für Eure ultraschnellen Antworten auf meine Fehlermeldung.
Damit hatte ich nicht gerechnet, nachdem ich gelesen hatte, dass bei einfachem
Versand einer Mail ohne Beitritt zur Mailingliste oft gar keine Antwort
erfolgt. Um so mehr habe ich mich über Eure Kommentare gefreut.
Und - in der Tat wären Code-Beispiele hilfreich gewesen - Entschuldigung!
Dies möchte ich nun nachholen:
Beispiel1:
--------------------------------------------------------------------------------------------------------------------
Sub Main
Dim a as integer
a = 1
On a GoSub marke1, marke2
Print "Ende"
Exit Sub
marke1:
Print "marke1"
Return
marke2:
Print "marke2"
Return
End Sub
--------------------------------------------------------------------------------------------------------------------
In diesem Beispiel wird bei a = 1 ebenso wie bei a = 2 jeweils die korrekte Marke
aufgerufen und der entsprechende Print-Befehl ausgeführt. In beiden Fällen bricht das
Makro jedoch beim 'Return' mit dem beschriebenen Fehler "Zurück ohne GoSub" ab.
Um dem Fehler aus dem Weg zu gehen, verwende ich derzeit hilfsweise anstelle
des 'On a GoSub ...'-Befehls dies:
Select Case a
Case 1: GoSub marke1
Case 2: GoSub marke2
End Select
In diesem Fall funktionieren sowohl 'GoSub' als auch 'Return' problemlos. Eine
Lösung ist das allerdings höchstens vorübergehend.
Nachtrag:
Erst im Nachhinein erinnerte ich mich an eine mir schon seit Jahren bekannte
weitere Auffälligkeit mit 'Return', bei der ich allerdings nicht weiß, ob sie
mit dem oben genannten Fehler wirklich in Zusammenhang steht. Auch dazu ein
Beispiel:
Beispiel2:
--------------------------------------------------------------------------------------------------------------------
Sub Main
For a = 1 to 2
GoSub marke1
Next
Print "Ende"
Exit Sub
marke1:
Print "marke1"
If a = 1 Then Return
Print "a ist ungleich 1"
Print "marke1-Ende"
Return
End Sub
--------------------------------------------------------------------------------------------------------------------
Hier wird bei a = 1 in der 'If - Then' Anweisung von 'marke1' der Return-Befehl
anstandslos ausgeführt.
Bei a = 2 sollte man annehmen, dass nach dem dann nicht mehr zutreffenden 'If' die darauf folgende
dritte Zeile (Print "a ist ungleich 1") ausgeführt wird. Dies ist jedoch nicht der Fall,
anscheinend weil der Interpreter diese Zeile einfach überspringt und stattdessen mit der
Folgezeile: Print "marke1-Ende" fortfährt.
Erstaunlich: Wird die 'If'-Zeile (syntaktisch unnötigerweise) mit einem Doppelpunkt
beendet, also: "If a = 1 Then Return:", tritt das Überspringen nicht auf!
Habt Ihr dazu eine gute Idee? (Viel Spaß beim Knobeln :-) )
Jedenfalls kommt es mir sehr unwahrscheinlich vor, dass ich der Erste sein soll, dem
diese "Return-Probleme" aufgefallen sein sollen.
Liebe Grüße
Hans
PS: Hoffentlich habe ich hier den richtigen Weg eingeschlagen, um den thread
fortzusetzen (in den Anleitungen fand ich keinen diesbezüglichen Hinweis).
-- Liste abmelden mit E-Mail an: [email protected]
Probleme?
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
--
Liste abmelden mit E-Mail an: [email protected]
Probleme?
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy