Makroprogrammierung -> Cursor in letzte Zelle einer Tabelle setzen

Hallo *,

ich suche den Makrocode, der mir in einer Tabelle den Cursor in die unterste rechte Zelle einer Tabelle setzt.
Beispiel: Tabellen mit zwei Zeilen und zwei Spalten (A1, A2, B1 und B2) -> Cursor soll in B2 gesetzt werden.
ACHTUNG: "B2" geht nicht, da variabel. Es könnte genauso gut "B5" oder "C3" sein.

Der folgende Code funktioniert leider nicht, da "gotoEnd(True)" den Cursor an das Dokument-Ende setzt.

ThisComponent.CurrentController.select(oTable)
oVCursor = ThisComponent.CurrentController.getViewCursor()
oVCursor.gotoEnd(True)

Hat jemand noch eine Idee?

LO: LibreOffice 3.4.5 OOO340m1 (Build:502)
OS: Windows 7 Prof 64 Bit

Gruß

Jochen

Hallo Jochen,

ich suche den Makrocode, der mir in einer Tabelle den Cursor in die
unterste rechte Zelle einer Tabelle setzt.
Beispiel: Tabellen mit zwei Zeilen und zwei Spalten (A1, A2, B1 und
B2) -> Cursor soll in B2 gesetzt werden.
ACHTUNG: "B2" geht nicht, da variabel. Es könnte genauso gut "B5" oder
"C3" sein.

Der folgende Code funktioniert leider nicht, da "gotoEnd(True)" den
Cursor an das Dokument-Ende setzt.

ThisComponent.CurrentController.select(oTable)
oVCursor = ThisComponent.CurrentController.getViewCursor()
oVCursor.gotoEnd(True)

Hat jemand noch eine Idee?

Hab mich mal vor Jahren mit OOo dran versucht und musste feststellen das
es(damals) nicht geht.
So musste ich mir eine andere Lösung für mich überlegen die auch gut
funktioniert.

Wenn Du kurz beschreibst, was Du vor hast, könnte ich schauen ob die
Lösung auch für Dich geeignet ist.
Ich brauchte das, um Überträge in mehrseitigen Angeboten/Rechnungen...
einzufügen.

Gruß
Heiko

Hallo,

doch, es gibt versch. Möglichkeiten:
Der letzte Zeile mit nicht-""-Eintrag:
  =VERGLEICH("";Tests.A1:A20000;)-1
oder über Anzahl zB die letzte Spalte (Zahlen):
  =ANZAHL2(A14:AAA14)
Jetzt kannst Du mit Indirekt(Verketten(...)) alles zusammen fügen und solltest die unterste, rechte Ecke der Tabelle bekommen.
Es hängt davon ab, was in der Tabelle steht, Du musst probieren.

LG, Gooly

Hallo Jochen,

ich suche den Makrocode, der mir in einer Tabelle den Cursor in die unterste rechte Zelle einer Tabelle setzt.

Dazu brauchst Du kein Makro,
denn Calc verfügt über diese Funktion
bereits standardmäßig:
- "Zum Dateiende" sowie das Gegenstück
- "Zum Dateianfang".

Du kannst sie einer Symbolleiste hinzufügen via:
"EXTRAS - ANPASSEN - SYMBOLLEISTEN".
Dort findest Du sie im Bereich "INTERN".
Leider finden sich in den Symbolen
keine wirklich intuitiven,
die man dafür verwenden kann.

Ebenso möglich ist die Bedienung über
die Tastatur: "Strg + Ende" sowie "Strg + Pos1"

Mit freundlichen Grüßen
Jörn

Hallo Jochen

Hallo *,

ich suche den Makrocode, der mir in einer Tabelle den Cursor in die unterste rechte Zelle einer Tabelle setzt.
Beispiel: Tabellen mit zwei Zeilen und zwei Spalten (A1, A2, B1 und B2) -> Cursor soll in B2 gesetzt werden.

ThisComponent.CurrentController.select(oTable)
oVCursor = ThisComponent.CurrentController.getViewCursor()
oVCursor.gotoEnd(True)

Hat jemand noch eine Idee?

LO: LibreOffice 3.4.5 OOO340m1 (Build:502)
OS: Windows 7 Prof 64 Bit

Es kommt darauf an, ob es sich um eine Calc- oder um eine Writer-Tabelle handelt.

Bei einer Writer- Tabelle funktioniert folgender Code:

oTable = ThisComponent.TextTables.getByName("Tabelle1")
ThisComponent.CurrentController.select(oTable)
myViewCursor=ThisComponent.GetCurrentController.ViewCursor
myViewCursor.gotoEnd(False)

Bei einer Calc Tabelle geht es etwas anders. dabei muss man noch unterscheiden,
ob sie direkt in Calc ist, oder ob sie in einem Weiter-Dokument Verlinkt ist.

Gruß Frieder

Hallo,

kann ich Paragraphen statt reine Zahlen als Nummerierung in Libre Office verwenden?

Beispiel:
§1 Erster Paragraph
§2 Zweiter Paragraph

Viele Grüße
Sven

Hallo Sven,

kann ich Paragraphen statt reine Zahlen als Nummerierung in Libre
Office verwenden?

Beispiel:
§1 Erster Paragraph
§2 Zweiter Paragraph

Format | Nummerierung und Aufzählungszeichen | Optionen | Davor

Und eine Bitte: Wenn Du eine Frage in der Mailingliste stellst,
beginne mit einem neuen, jungfräulichen Mail und nicht mit einer
Antwort auf ein Mail, das Du empfangen hast. Danke.

Gruß

Stefan

Hallo Stefan,

vielen Dank für die schnelle Hilfe. Das war genau das, was ich gesucht habe.

Und zur Bitte:
Ich dachte immer, es reicht wenn man den Betreff löscht. Na gut, danke für die Info.

Viele Grüße
Sven

Hallo Stefan,

Noch eine Frage dazu:
Kann ich im Feld "dahinter" auch ein Zeilenumbruch einfügen?

Viele Grüße,
Sven

Hi Sven,

Noch eine Frage dazu:
Kann ich im Feld "dahinter" auch ein Zeilenumbruch einfügen?

Format | Nummerierung und Aufzählungszeichen | Optionen | Dahinter

Ich weiß nicht, ob und wenn ja wie man dort einen Zeilenumbruch
deklarieren könnte.

Format | Nummerierung und Aufzählungszeichen | Position |
Nummerierung wird gefolgt von

bietet: Tabulator/Leerzeichen/Nichts

Eine hässliche, aber vielleicht praktikable Lösung wäre es, einen
Tabulator am Ende der Zeile zu setzen (genau ein Tabulator, z.B. bei
17 cm), sodass unmittelbar danach ein automatischer Umbruch erfolgt.

Gruß

Stefan

Hallo Sven,

Extras >> Kapitelnummerierung
dann jeweils vor den Ebenen:
Trennzeichen davor: hier das § Zeichen einfügen,
dann erfolgt die Kapitel-Nummerierung mit §1, oder §1.1 usw.
Zwischen § und Zahl kann auch ein Leerzeichen stehen,
wenn es beim Trennzeichen mit eingegeben wurd.

Gruß
Heinrich

Hallo Frieder und die restlichen Mitdiskutanten,

ich suche den Makrocode, der mir in einer Tabelle den Cursor in die
unterste rechte Zelle einer Tabelle setzt.

Es kommt darauf an, ob es sich um eine Calc- oder um eine Writer-Tabelle
handelt.

Sorry. Ich habe vergessen, zu erwähnen, dass ich eine Tabelle in Writer gemeint habe. Ich habe mich da in "Problem" verbissen und nicht gemerkt, dass meine Anfrage ungenau war.

oTable = ThisComponent.TextTables.getByName("Tabelle1")
ThisComponent.CurrentController.select(oTable)
myViewCursor=ThisComponent.GetCurrentController.ViewCursor
myViewCursor.gotoEnd(False)

Dies hat bei mir nicht zum Erfolg geführt, da der Cursor in der oberste linke Zelle gesetzt wurde und der letzte Buchstabe des dort enthaltenen Wortes gelöscht wurde. Warum auch immer. Vielleicht durch den vorherigen Makro-Code bedingt.
Nicht so schlimm, da ich eine andere Lösung gefunden habe:
Nach Einfügen der Tabelle per makrogesteuertem AutoText werden folgende zwei Befehle ausgeführt.

ThisComponent.currentController.getViewCursor().goLeft(1, Boolean)
dispatcher.executeDispatch(document, ".uno:DelToEndOfSentence", "", 0, Array())

Bemerkung: Das Löschen des Absatzes, der der Tablle folgt, ist IMHO nur mittels Dispatcher möglich.

Gruß

Jochen

Status: solved problem