Seite 1 von 1

BASIC Wie beschreibe ich eine Zelle ....

Verfasst: Do, 15.07.2004 10:36
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

Verfasst: Do, 15.07.2004 17:51
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

Verfasst: Do, 22.07.2004 17:18
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