[gelöst]Grundsatzfrage: Ansprechen von Tabellen und Zellen

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

Moderator: Moderatoren

Niels
*****
Beiträge: 212
Registriert: Mi, 16.06.2004 06:46
Wohnort: Heikendorf

[gelöst]Grundsatzfrage: Ansprechen von Tabellen und Zellen

Beitrag von Niels »

Hallo zusammen,

Laut OO-Basic Handbuch soll ich so auf eine Tabelle zugreifen können und Zellen bearbeiten können:

Code: Alles auswählen

sub Test
Dim Doc As Object 
Dim Sheet As Object
Dim Cell As Object

Doc = StarDesktop.CurrentComponent
Sheet=Doc.Sheets.getByName('Tabelle3') 'hier klemmt es
Cell=Sheet.getCellByPosition(1, 1)
Cell.String = "Test11"
Cell = Sheet.getCellByPosition(2, 2)
Cell.String = "Test22"
Cell = Sheet.getCellByPosition(1, 2)
Cell.String = "Test12"
end Sub
Ich bekomme jedoch leider einen "Fehler bei Klammerschachtelung". Was mache ich falsch?

Danke
Niels
Zuletzt geändert von Niels am Do, 29.06.2006 18:00, insgesamt 1-mal geändert.
Wer lesen kann ist klar im Vorteil.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Ich bekomme jedoch leider einen "Fehler bei Klammerschachtelung". Was mache ich falsch?


Na die Fehlermeldung dürfte auch ziemlich falsch sein. Falsch an Deinem Code sind aber die Hochkommas das müssen Anführungszeichen sein, so hier:

Code: Alles auswählen

Sheet=Doc.Sheets.getByName("Tabelle3")
mehr fällt mir zunächst nicht auf.



Gruß
Stephan
Niels
*****
Beiträge: 212
Registriert: Mi, 16.06.2004 06:46
Wohnort: Heikendorf

Beitrag von Niels »

Stephan hat geschrieben:Falsch an Deinem Code sind aber die Hochkommas das müssen Anführungszeichen sein, so hier:

Code: Alles auswählen

Sheet=Doc.Sheets.getByName("Tabelle3")
Danke Stephan,

Das hatte ich auch schon vermutet und getestet. Leider ohne Erfolg.

Gruß
Niels
Wer lesen kann ist klar im Vorteil.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Das hatte ich auch schon vermutet und getestet.


Dann verstehe ich aber nicht warum Du einen falschen Code postest, denn Hochkommas sind nun einmal falsch.

Ich habe es nun getestet und der Code läuft, mit der angegebenen Änderung, problemlos.
Keine Ahnung was da sein soll. Klar ist Dir hoffentlich das Du den Code nicht aus der Basic-IDE starten kannst, sondern nur wenn das Calc-Dokument den Fokus besitzt, weil Du:

Code: Alles auswählen

StarDesktop.CurrentComponent
Verwendest, was sich auf das aktive Dokument, im Falle Basic-IDE also auf diese, bezieht und die Basic-IDE hat nun einmal keine Tabellen.
Aber auch das ist kein Grund für eine Fehlermeldung bzgl. der Klammerschachtelung wie Du sie beschreibst.

Mithin:
Der Code:

Code: Alles auswählen

sub Test 
Dim Doc As Object 
Dim Sheet As Object 
Dim Cell As Object 

Doc = StarDesktop.CurrentComponent 
Sheet=Doc.Sheets.getByName("Tabelle3") 'hier klemmt es 
Cell=Sheet.getCellByPosition(1, 1) 
Cell.String = "Test11" 
Cell = Sheet.getCellByPosition(2, 2) 
Cell.String = "Test22" 
Cell = Sheet.getCellByPosition(1, 2) 
Cell.String = "Test12" 
end Sub
ist tadellos und muß laufen, es gibt keine Fehler im Code.
Möglicherweise ist Deine OOo-Version fehlerhaft, nur die kenne ich nicht.



Gruß
Stephan
Mihilist
****
Beiträge: 120
Registriert: Di, 25.04.2006 15:27
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Mihilist »

Stephan hat geschrieben:
Ich bekomme jedoch leider einen "Fehler bei Klammerschachtelung". Was mache ich falsch?


Na die Fehlermeldung dürfte auch ziemlich falsch sein. Falsch an Deinem Code sind aber die Hochkommas das müssen Anführungszeichen sein
Die Fehlermeldung ist schon richtig, weil durch das ' ein ) auskommentiert wird. Somit besteht für BASIC ein Klammerfehler... ;)

Interessanter wäre, was für eine Fehlermeldung kommt, nachdem 'Tabelle' durch "Tabelle" ersetzt wurde...

PS: Ich hoffe nicht, dass es daran liegt... Aber nur so vorsichtshalber: " als Gänsefüßchen/Shift-2, nicht doppeltes ' :D
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Die Fehlermeldung ist schon richtig, weil durch das ' ein ) auskommentiert wird. Somit besteht für BASIC ein Klammerfehler...
Gut, akzeptiert.

Obwohl eine fehlende Klammer in einer einzelnen CodeZeile (die nicht Bestandteil eines logisch geschlossenen Code-Blocks ist) nun ja zwar ein Klammerfehler ist aber kein Fehler in der Klammerschachtelung.
Aber die Fehlermeldungen sind häufig etwas verwirrend und ich bekomme im Vorliegenden Fall nicht einmal die genannte Fehlermeldung.



Gruß
Stephan
Niels
*****
Beiträge: 212
Registriert: Mi, 16.06.2004 06:46
Wohnort: Heikendorf

Beitrag von Niels »

Stephan hat geschrieben:Dann verstehe ich aber nicht warum Du einen falschen Code postest, denn Hochkommas sind nun einmal falsch.
Das ist relativ einfach erklärt: Weil es so im Handbuch (Seite 120) steht und die Anführungszeichen nur ein Versuch von mir waren.
Stephan hat geschrieben:Klar ist Dir hoffentlich das Du den Code nicht aus der Basic-IDE starten kannst, sondern nur wenn das Calc-Dokument den Fokus besitzt, ....
Nein, war mir nicht bewußt. Ich bin momentan unterwegs und habe nur die Wartezeit am FremdPC zum Lesen genutzt. Ich werde es sobald wie möglich testen, vermute aber schon, dass dies der Fehler ist. Ich habe es zwar auch direkt aus dem Dokument versucht, aber vermutlich nur mit Hochkommas.


Danke
Niels
Wer lesen kann ist klar im Vorteil.
Niels
*****
Beiträge: 212
Registriert: Mi, 16.06.2004 06:46
Wohnort: Heikendorf

Beitrag von Niels »

Stephan hat geschrieben:Klar ist Dir hoffentlich das Du den Code nicht aus der Basic-IDE starten kannst, sondern nur wenn das Calc-Dokument den Fokus besitzt, weil Du:

Code: Alles auswählen

StarDesktop.CurrentComponent
Verwendest, was sich auf das aktive Dokument, im Falle Basic-IDE also auf diese, bezieht und die Basic-IDE hat nun einmal keine Tabellen.
Das war es.
Danke für Eure Unterstützung.
Niels
Wer lesen kann ist klar im Vorteil.
Antworten