BASIC Wie beschreibe ich eine Zelle ....

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Raabun
**
Beiträge: 26
Registriert: So, 27.06.2004 14:13

BASIC Wie beschreibe ich eine Zelle ....

Beitrag von Raabun »

Hi,
Mein Problem:

FUNCTION schicht_type(pointer AS INTEGER, enable AS INTEGER) AS DOUBLE
Dim sheet AS OBJECT

IF pointer = 0 THEN
schicht_type = 0
EXIT FUNCTION
END IF

IF enable = 0 THEN
schicht_type = 0
EXIT FUNCTION
END IF

MyDoc = ThisComponent

sheet = MyDoc.getSheets().getByIndex(0)
sheet.getCellByPosition(0,40).setValue(23.0)

Tabelle3 = MyDoc.getSheets().getByIndex(2)
schicht_type = Tabelle3.getCellByPosition(9,pointer).Value


END FUNCTION


Diese Funktion wird von einer Zelle auf Tabelle1 (Sheet 0 ) aufgerufen:

=SCHICHT_TYPE(F64;F51)

alles funktioniert bis auf die Zeilen:

sheet = MyDoc.getSheets().getByIndex(0)
sheet.getCellByPosition(0,40).setValue(23.0)

ändere ich nun diese Zeilen in:

sheet = MyDoc.getSheets().getByIndex(1)
sheet.getCellByPosition(0,40).setValue(23.0)


funktioniert der Code, aber leider kann ich mit der 23 auf Sheet 1 nix anfangen :(

nur zur Klarstellung die 23.0 wird später durch eine Variable ersetzt und die Zellposition auch. Es wird aber weiterhin auf Sheet 0 geschrieben.
Dies ist nur ein Test-Code.

Gruß
Dirk-Uwe
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Hallo Dirk-Uwe,

wie man die Funktion anders formulieren kann weiß ich noch nicht, Ursache für die Fehlfunktion ist jedoch, meiner Meinung nach, das die Funktion von Tabelle1 aufgerufen ist und OOo bei:

getByIndex(0)

der Meinung ist: Warum soll ich mir Tabelle1 "schnappen" ich bin doch schon in Tabelle1. Ich weiß nicht ob das nun unbedingt so realisiert sein muß wie Du es bisher angedacht hast.

Falls ja, mache Dir eine weitere Tabelle, kopiere die Formel dahinein, also:

=SCHICHT_TYPE(Tabelle1.F64;Tabelle1.F51)

und blende diese zusätzliche Tabelle einfach aus. So funktioniert es zumindestens schonmal.


Gruß
Stephan
Raabun
**
Beiträge: 26
Registriert: So, 27.06.2004 14:13

Beitrag von Raabun »

Hallo,
Ich habe diesen Vorfall OpenOffice gemeldet.
Sie führen ihn als Issue 31627.

Aber sie sagen, daß dieses Verhalten so gewünscht ist, macht ja auch Sinn, denn wenn sich eine Zelle bei der Neuberechnung einer Seite ändert, mit welchem Wert soll gerechnet werden? Dem Alten oder dem Neuen?

Schade ist nur, daß BASIC keine Fehler- oder Warnmeldung ausgibt. Es ignoriert einfach die Anweisung :(

Gruß
Dirk-Uwe
Antworten