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

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

chakalakka
Beiträge: 7
Registriert: Di, 17.03.2009 22:29

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

Beitrag 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
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

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

Beitrag 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
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

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

Beitrag 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
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
chakalakka
Beiträge: 7
Registriert: Di, 17.03.2009 22:29

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

Beitrag 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
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

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

Beitrag 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
Antworten