Weisst Du zufällig, ob die Verwendung von Rückgabewerten bei Prozeduren so gedacht und gewollt ist?
Leider nein. Dazu müßte ich praktisch ein entsprechendes Spezifikationsdokument kennen, welches diese Funktion beschreibt, ich kenne jedoch keines.
Dieses doch eher ungewöhnliche Verhalten ist mir auch neulich per Zufall aufgefallen, aber irgendwie scheint mir das nicht ganz "richtig" und widerspricht zudem der Beschreibung im OOo Wiki.
Wenn ich mir irgendwas im Wiki anschauen soll brauchte ich den Link, mir ist nicht automatisch klar um welche Wikiseite es hier geht.
Abgesehen von der Leserlichkeit stellt sich mir da nämlich die Frage, ob derartig geschriebene Makros nicht möglicherweise in Zukunft auf einmal fehlerhaft sein könnten.
Seriös ist das nur mit einem "Ja, Aber" zu beantworten. Mindestbedingung für Zukunftsicherheit wäre spezifiziertes Funktionieren, das gibt es aber bei OOo an so vielen Stellen nicht, das ich fast denke es lohnt sich nicht ernsthaft darüber nachzudenken.
Das ist auch die Antwort die ich Dir aus meiner OOo-Berufspraxis geben würde, denn dort gebe ich praktisch nur noch Makros OOo-versionsweise frei, da auch bei erhöhtem Aufwand, zwecks Überlegungen zur zukunftssicheren Implementierung, keine verlässliche Implementierung möglich ist. In den 1er Versionen von OOo war das früher mal anders, aber seit 2.x ist die Lage leider so.
Man kann zwar auch heute Glück haben das Implementierungen nicht von von der OOo-Version abhängig sind, aber in den letzten Jahren gebe ich jegliche Dinge die ich beruflich für Kunden programmiere nur immer für konkrete OOo-Versionen frei und nicht mehr 'allgemein'.
Was mich anbelangt, es funktioniert. Inzwischen schon einige dutzend Male.
Ich denke die Frage von DPunch zielte wohl eher auf das Grundsätzliche.
Die LÖsung die ihm vorschwebt dürfte wohl sein:
Code: Alles auswählen
Sub Arbeit()
ergebnis = rechnen(3, 4) * 15
MsgBox ergebnis
End Sub
Function rechnen(x As Integer, y As Integer) As Integer
rechnen = x + y
End Function
und das ich diese nicht gegeben habe hat damit zu tun das Du konkret nach Sub gefragt hast und ich mir dachte Du wirst DEine Gründe haben.
Wahrscheinlich hätte DPunch auch nichts gegen sowas:
Code: Alles auswählen
Global rechnen As integer
Sub Arbeit()
berechnen(3, 4)
ergebnis = rechnen * 15
Msgbox ergebnis
End Sub
Sub berechnen(x, y)
rechnen = x + y
End Sub
Gruß
Stephan
[quote]Weisst Du zufällig, ob die Verwendung von Rückgabewerten bei Prozeduren so gedacht und gewollt ist?[/quote]
Leider nein. Dazu müßte ich praktisch ein entsprechendes Spezifikationsdokument kennen, welches diese Funktion beschreibt, ich kenne jedoch keines.
[quote]Dieses doch eher ungewöhnliche Verhalten ist mir auch neulich per Zufall aufgefallen, aber irgendwie scheint mir das nicht ganz "richtig" und widerspricht zudem der Beschreibung im OOo Wiki.[/quote]
Wenn ich mir irgendwas im Wiki anschauen soll brauchte ich den Link, mir ist nicht automatisch klar um welche Wikiseite es hier geht.
[quote]Abgesehen von der Leserlichkeit stellt sich mir da nämlich die Frage, ob derartig geschriebene Makros nicht möglicherweise in Zukunft auf einmal fehlerhaft sein könnten.[/quote]
Seriös ist das nur mit einem "Ja, Aber" zu beantworten. Mindestbedingung für Zukunftsicherheit wäre spezifiziertes Funktionieren, das gibt es aber bei OOo an so vielen Stellen nicht, das ich fast denke es lohnt sich nicht ernsthaft darüber nachzudenken.
Das ist auch die Antwort die ich Dir aus meiner OOo-Berufspraxis geben würde, denn dort gebe ich praktisch nur noch Makros OOo-versionsweise frei, da auch bei erhöhtem Aufwand, zwecks Überlegungen zur zukunftssicheren Implementierung, keine verlässliche Implementierung möglich ist. In den 1er Versionen von OOo war das früher mal anders, aber seit 2.x ist die Lage leider so.
Man kann zwar auch heute Glück haben das Implementierungen nicht von von der OOo-Version abhängig sind, aber in den letzten Jahren gebe ich jegliche Dinge die ich beruflich für Kunden programmiere nur immer für konkrete OOo-Versionen frei und nicht mehr 'allgemein'.
[quote]Was mich anbelangt, es funktioniert. Inzwischen schon einige dutzend Male.[/quote]
Ich denke die Frage von DPunch zielte wohl eher auf das Grundsätzliche.
Die LÖsung die ihm vorschwebt dürfte wohl sein:
[code]Sub Arbeit()
ergebnis = rechnen(3, 4) * 15
MsgBox ergebnis
End Sub
Function rechnen(x As Integer, y As Integer) As Integer
rechnen = x + y
End Function[/code]
und das ich diese nicht gegeben habe hat damit zu tun das Du konkret nach Sub gefragt hast und ich mir dachte Du wirst DEine Gründe haben.
Wahrscheinlich hätte DPunch auch nichts gegen sowas:
[code]Global rechnen As integer
Sub Arbeit()
berechnen(3, 4)
ergebnis = rechnen * 15
Msgbox ergebnis
End Sub
Sub berechnen(x, y)
rechnen = x + y
End Sub[/code]
Gruß
Stephan