Seite 1 von 1

Makro: Formel in Zelle einfügen nur im anderen Sheet möglich

Verfasst: Di, 17.03.2009 22:54
von chakalakka
Hallo,

ich habe ein Makro geschrieben welches einen String als Formel in eine Zelle schreibt:

Function textzuformel (formel as string)
...
thisComponent.sheets(0).getCellRangeByName("A1").formulaLocal = formel
...


Funktioniert auch, allerdings nur wenn ich diese Funktion in sheet(1) aufrufe. Wenn ich diese Funktion in sheet(0) aufrufe passiert gar nichts.
Wenn ich die Codezeile in
thisComponent.sheets(1).getCellRangeByName("A1").formulaLocal = formel
ändere, dann kann ich die Funktion in sheet(0) aufrufen, aber nicht mehr in sheet(1)

Kann mir jemand sagen was ich machen muss, damit die Funktion überall funktioniert?????
Nochwas: Wenn ich folgenden Code eingebe, und aus sheet(0) heraus aufrufe, erscheint eine Fehlermeldung: "Basic Laufzeitfehler. Es ist eine Exception aufgetreten. Type: com.sun.star.uno.RuntimeException Message: . "

thisComponent.sheets(1).getCellRangeByName("Tabelle1.A1").formulaLocal = formel

Schon mal vielen Dank für eure Hilfe,
gruß aaron

Re: Makro: Formel in Zelle einfügen nur im anderen Sheet möglich

Verfasst: Di, 17.03.2009 23:33
von Stephan
Kann mir jemand sagen was ich machen muss, damit die Funktion überall funktioniert?
garnichts, das Gewünschte funktioniert in Calc nicht, da benutzerdefinierte Funktionen, unter den genannten Umständen, stets nur einen Rückgabewert und keine Rückgabeaktion liefern.



Gruß
Stephan

Re: Makro: Formel in Zelle einfügen nur im anderen Sheet möglich

Verfasst: Mi, 18.03.2009 15:06
von balu
Hallo aaron,

von Makro hab ich nicht wirklich viel Ahnung, aber
thisComponent.sheets(1).getCellRangeByName("Tabelle1.A1").formulaLocal = formel
besagt doch, das sheets(1) die Tabelle 2 anspricht, und Du aber in Tabelle1 eine Formel eintragen willst. Also wie soll sich Calc denn nun verhalten?

Bedenke bitte, dass die Zählweise bei sheets anders ist, als wie Du sie vor dir siehst. Das 1. Tabellenblatt hat immer die Nummer 0 das 2. dann die 1 und so weiter. Also
Tabelle 1 ist sheets(0)
Tabelle 2 ist sheets(1)
Tabelle 3 ist sheets(2)

Ansonsten kann ich dir nur empfehlen im richtigen Forum "OOo Basic und Java" deine Anfrage noch mal neu zu stellen. Ferner, falls noch nicht geschehen, mal bei Michael Dannenhöfer reinschaun.


Gruß
balu

Re: Makro: Formel in Zelle einfügen nur im anderen Sheet möglich

Verfasst: Mi, 18.03.2009 17:52
von chakalakka
Stephan hat geschrieben:
Kann mir jemand sagen was ich machen muss, damit die Funktion überall funktioniert?[

garnichts, das Gewünschte funktioniert in Calc nicht, da benutzerdefinierte Funktionen, unter den genannten Umständen, stets nur einen Rückgabewert und keine Rückgabeaktion liefern.
[/qu[te]
Danke für die Antworten. Dass sheet(0) Tabelle 1 anspricht habe ich bedacht. Aber unter welchen Umständen kann eine Funktion denn auch eine Rückgabeaktion liefern?
Gruß, Aaron

Re: Makro: Formel in Zelle einfügen nur im anderen Sheet möglich

Verfasst: Do, 19.03.2009 10:46
von Stephan
Aber unter welchen Umständen kann eine Funktion denn auch eine Rückgabeaktion liefern?
indem man sie beispielsweise mit einem Makro aufruft oder ebend von einem anderen Blatt aufruft, wie Du selbst beschrieben hast.

starte z.B. Makro aufruf(), dieses ruft dann die eigentliche Funktion auf:

Code: Alles auswählen

Sub aufruf()
x = textzuformel("=sum(B1:B10)")
End Sub

Function textzuformel (formel as string)
thisComponent.sheets(0).getCellRangeByName("A1").formulaLocal = formel
textzuformel = "OK"
End Function
in obiger Funktion ist das Eintragen der Formel, die Rückgabeaktion, hingegen ist die Rückgabe von "OK" durch die Funktion nur die Ausgabe eines Rückgabewertes.



Gruß
Stephan