🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Aktuelle Tabellenzeile nutzen / Zahlenfomat per Makro
-
- Beiträge: 6
- Registriert: So 4. Jan 2015, 16:45
Aktuelle Tabellenzeile nutzen / Zahlenfomat per Makro
Hallo liebe Leute,
ich bräuchte eure Hilfe für ein Makro das ich aufgenommen habe. Programmiertechnisch bin ich leider nicht sonderlich bewandert und hoffe einer von euch Profis hat einen Tipp parat.
Es handelt sich um diesen Makroteil:
_____
rem ----------------------------------------------------------------------
dim args23(0) as new com.sun.star.beans.PropertyValue
args23(0).Name = "Formula"
args23(0).Value = "<D5>*<C5>"
dispatcher.executeDispatch(document, ".uno:InsertFormula", "", 0, args23())
____
Ich würde gerne die aktuelle Zeile hier per Programmcode einfügen.
D.h. D und C können fixiert bleiben, jedoch soll de "5" hier im Beispiel jeweils die aktuelle Zeile sein. Ist das möglich und einfach zu implementieren?
Die zweite Frage wäre, ich würde gerne die Zellen C und D der aktuellen Zeile mit einem Zahlenformat formatieren: #.##0,00
Dieses Feature lässt sich offensichtlich nicht mit dem Marko Rekorder festhalten.
Vielen Dank schonmal vorab.
ich bräuchte eure Hilfe für ein Makro das ich aufgenommen habe. Programmiertechnisch bin ich leider nicht sonderlich bewandert und hoffe einer von euch Profis hat einen Tipp parat.
Es handelt sich um diesen Makroteil:
_____
rem ----------------------------------------------------------------------
dim args23(0) as new com.sun.star.beans.PropertyValue
args23(0).Name = "Formula"
args23(0).Value = "<D5>*<C5>"
dispatcher.executeDispatch(document, ".uno:InsertFormula", "", 0, args23())
____
Ich würde gerne die aktuelle Zeile hier per Programmcode einfügen.
D.h. D und C können fixiert bleiben, jedoch soll de "5" hier im Beispiel jeweils die aktuelle Zeile sein. Ist das möglich und einfach zu implementieren?
Die zweite Frage wäre, ich würde gerne die Zellen C und D der aktuellen Zeile mit einem Zahlenformat formatieren: #.##0,00
Dieses Feature lässt sich offensichtlich nicht mit dem Marko Rekorder festhalten.
Vielen Dank schonmal vorab.
Re: Aktuelle Tabellenzeile nutzen / Zahlenfomat per Makro
Hallo,
so pauschal lässt sich das nicht beantworten.
1. aufgrund des Syntax vermute ich mal, du befindest dich in der Textverarbeitung (writer)
2. du hast eine Texttabelle in der du Einfügungen machen möchtest
An welcher Stelle rufst du dein Makro auf? (innerhalb der Tabelle, ...?)
Was soll dein Makro insgesamt leisten? (die Lösung des einen Teils ist ohne die Kenntnis der restlichen Funktionalitäten nicht effektiv)
sehr hilfreich für die Hilfe wäre eine (anonymisierte) Beispieldatei.
so pauschal lässt sich das nicht beantworten.
1. aufgrund des Syntax vermute ich mal, du befindest dich in der Textverarbeitung (writer)
2. du hast eine Texttabelle in der du Einfügungen machen möchtest
An welcher Stelle rufst du dein Makro auf? (innerhalb der Tabelle, ...?)
Was soll dein Makro insgesamt leisten? (die Lösung des einen Teils ist ohne die Kenntnis der restlichen Funktionalitäten nicht effektiv)
sehr hilfreich für die Hilfe wäre eine (anonymisierte) Beispieldatei.
Gruß,
mikele
mikele
-
- Beiträge: 6
- Registriert: So 4. Jan 2015, 16:45
Re: Aktuelle Tabellenzeile nutzen / Zahlenfomat per Makro
Vielen Dank für die schnelle Antwort:
1. Ja, Writer
2. Ja eine Tabelle die jedes mal gleich aussieht. Ich rufe das Makro "Produkt" auf, wenn ich den Cursor in einer neuen Zeile habe und möchte das mit vordefiniertem Text und Zahlen ausfüllen. Die Textformatierung übernimmt es. Die Positionierungen passen.
Die Zeile 1 ist die Beispielzeile. Die Zeile 2 wurde durch das Makro erzeugt.
3. Was mir nicht gelingt:
3.1. Dass die letzte Spalte eine Multiplikation aus den beiden davorliegenden ist und zwar aus der jeweiligen Zeile.
3.2. Dass wenn die Tabellenzelle ohne Formatierung ist, also nicht von oben runter kopiert... die Zahlenformatierung in der Makroaufzeichnung nicht funktioniert. Ich möchte z.b 1000 schreiben, und eine automatische Wandlung auf mein gewünschtes Zahlenformat => 1.000,00
1. Ja, Writer
2. Ja eine Tabelle die jedes mal gleich aussieht. Ich rufe das Makro "Produkt" auf, wenn ich den Cursor in einer neuen Zeile habe und möchte das mit vordefiniertem Text und Zahlen ausfüllen. Die Textformatierung übernimmt es. Die Positionierungen passen.
Die Zeile 1 ist die Beispielzeile. Die Zeile 2 wurde durch das Makro erzeugt.
3. Was mir nicht gelingt:
3.1. Dass die letzte Spalte eine Multiplikation aus den beiden davorliegenden ist und zwar aus der jeweiligen Zeile.
3.2. Dass wenn die Tabellenzelle ohne Formatierung ist, also nicht von oben runter kopiert... die Zahlenformatierung in der Makroaufzeichnung nicht funktioniert. Ich möchte z.b 1000 schreiben, und eine automatische Wandlung auf mein gewünschtes Zahlenformat => 1.000,00
- Dateianhänge
-
- Makro Vorlage.odt
- (21.4 KiB) 134-mal heruntergeladen
Re: Aktuelle Tabellenzeile nutzen / Zahlenfomat per Makro
Moin,
hiermit kannst Du mal loslegen
Gruß R
hiermit kannst Du mal loslegen
Code: Alles auswählen
Sub ZeileEinfuegen
myDoc = thisComponent
myTables = myDoc.getTextTables
myTable = myTables.getByName("Tabelle1")
rows = myTable.rows
anzahl = myTable.rows.count
vorletztezeile = anzahl - 4
rows.insertByIndex(vorletztezeile,1)
oformatcell = myTable.getCellByName("D3")
nNumberformat = oformatcell.NumberFormat
zelle = myTable.getCellByPosition(0,vorletztezeile)
zelle.value = vorletztezeile - 1
zelle = myTable.getCellByPosition(2,vorletztezeile)
zelle.value = 0.0
zelle = myTable.getCellByPosition(3,vorletztezeile)
zelle.value = 0.0
zelle.NumberFormat = nNumberformat
zelle = myTable.getCellByPosition(4,vorletztezeile)
zelle.NumberFormat = nNumberformat
zelle.Formula="=<C"&(vorletztezeile+1)&">*<D"&(vorletztezeile+1)&">"
End Sub
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 6
- Registriert: So 4. Jan 2015, 16:45
Re: Aktuelle Tabellenzeile nutzen / Zahlenfomat per Makro
Hallo vielen Dank schonmal. Ist das ein Beispiel das es umzubauen gilt, oder sollte das schon funktionieren?
Denn leider bekomme ich folgenden Fehler beim Ausführen:
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.lang.IndexOutOfBoundsException
Message: .
Denn leider bekomme ich folgenden Fehler beim Ausführen:
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.lang.IndexOutOfBoundsException
Message: .
Re: Aktuelle Tabellenzeile nutzen / Zahlenfomat per Makro
Moin,
sollte schon funktionieren, siehe Beispieldatei anbei, allerdings muss hier deine SN- Nr. noch eingebaut werden.
Gruß R
sollte schon funktionieren, siehe Beispieldatei anbei, allerdings muss hier deine SN- Nr. noch eingebaut werden.
Gruß R
- Dateianhänge
-
- Makro Vorlage.odt
- (15.67 KiB) 137-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 6
- Registriert: So 4. Jan 2015, 16:45
Re: Aktuelle Tabellenzeile nutzen / Zahlenfomat per Makro
F3K Total: Ich danke schon vielmals.
Eine Sache bei der ich leider garnicht weiter weiß: Ich hätte gerne das Zahlenformat ohne € Symbol mit dem Formatcode: #.##0,00
Die Funktion ist aktuell zu steif (deshalb ging es in dem anderen Dokument nicht). Aber erstmal gut damit ich das verstehen überhaupt.
Das "steif" deshalb, weil die Tabelle ja immer gleich aussehen muss und das zumindest vor allem unten nicht tut. Ist es möglich die aktuelle Zeile (in der eingefügt wird und auch der Cursor steht herauszufinden) Und dann eine Multiplikation von C(aktuelle Zeile) * D(aktuelle Zeile) auszuführen?
Meine Originalfunktion mit Makrorecorder tut alles was sie soll:
+ korrekt formatieren Text einfügen
+ einen dynamischen Zeilenzähler einfügen, der bei einer Zeilenlöschung sich selbst aktualisiert
+ die Werteeintragung
Was nicht funktioniert:
- Das Zahlenformat (das nimmt der Makrorekorder bei mir einfach nicht mit auf)
- Die Multiplikation die statisch fest ist und aber dynamisch auf die jeweilige aktuelle Zeile angepasst sein sollte
Eine Sache bei der ich leider garnicht weiter weiß: Ich hätte gerne das Zahlenformat ohne € Symbol mit dem Formatcode: #.##0,00
Die Funktion ist aktuell zu steif (deshalb ging es in dem anderen Dokument nicht). Aber erstmal gut damit ich das verstehen überhaupt.
Das "steif" deshalb, weil die Tabelle ja immer gleich aussehen muss und das zumindest vor allem unten nicht tut. Ist es möglich die aktuelle Zeile (in der eingefügt wird und auch der Cursor steht herauszufinden) Und dann eine Multiplikation von C(aktuelle Zeile) * D(aktuelle Zeile) auszuführen?
Meine Originalfunktion mit Makrorecorder tut alles was sie soll:
+ korrekt formatieren Text einfügen
+ einen dynamischen Zeilenzähler einfügen, der bei einer Zeilenlöschung sich selbst aktualisiert
+ die Werteeintragung
Was nicht funktioniert:
- Das Zahlenformat (das nimmt der Makrorekorder bei mir einfach nicht mit auf)
- Die Multiplikation die statisch fest ist und aber dynamisch auf die jeweilige aktuelle Zeile angepasst sein sollte
Re: Aktuelle Tabellenzeile nutzen / Zahlenfomat per Makro
Hi,
das Format holt sich das Makro aus dieser Zeile
Änderst Du das Format in D3, wird es vom Makro übernommen.
R
das Format holt sich das Makro aus dieser Zeile
Code: Alles auswählen
oformatcell = myTable.getCellByName("D3")
R
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Aktuelle Tabellenzeile nutzen / Zahlenfomat per Makro
Hallo,
anstelle der eleganten Lösung von F3K total fahre ich mal ein größeres Geschütz auf. Ich fand es ziemlich spannend, da ich 'ne Menge dabei gelernt habe (nun weiß ich auch, wie ich die Nummer eines Formatcodes herausfinde
).
Für die automatische Nummerierung halte ich hier die Absatznummerierung für günstiger als Textfelder (als Alternative im Makro enthalten). Dafür nutze ich die Formatvorlage "Nummerierung 2".
Um die Programmierung etwas einfacher zu gestalten habe ich zwei Formatvorlagen entsprechend deiner verwendeten Formate definiert:
1) Tabelle_allgemein für den "normalen" Text (Verdana, 10)
2) Tabelle_Attribut für die Zeile mit dem Text Attribut (Verdana, 7, grau)
Das Makro ist umfangreicher geworden, da jede Zelle (zur Sicherheit) noch wie gewünscht formatiert wird.
Nach der Zeile in der sich der Cursor befindet, wird eine neue Zeile mit den Formatierungen und Inhalten angelegt. Sollte das Makro aufgerufen werden, wenn sich der Cursor außerhalb der Tabelle befindet, bekommst du einen kleinen Hinweistext.
anstelle der eleganten Lösung von F3K total fahre ich mal ein größeres Geschütz auf. Ich fand es ziemlich spannend, da ich 'ne Menge dabei gelernt habe (nun weiß ich auch, wie ich die Nummer eines Formatcodes herausfinde

Für die automatische Nummerierung halte ich hier die Absatznummerierung für günstiger als Textfelder (als Alternative im Makro enthalten). Dafür nutze ich die Formatvorlage "Nummerierung 2".
Um die Programmierung etwas einfacher zu gestalten habe ich zwei Formatvorlagen entsprechend deiner verwendeten Formate definiert:
1) Tabelle_allgemein für den "normalen" Text (Verdana, 10)
2) Tabelle_Attribut für die Zeile mit dem Text Attribut (Verdana, 7, grau)
Das Makro ist umfangreicher geworden, da jede Zelle (zur Sicherheit) noch wie gewünscht formatiert wird.
Nach der Zeile in der sich der Cursor befindet, wird eine neue Zeile mit den Formatierungen und Inhalten angelegt. Sollte das Makro aufgerufen werden, wenn sich der Cursor außerhalb der Tabelle befindet, bekommst du einen kleinen Hinweistext.
- Dateianhänge
-
- Makro Vorlage neu.odt
- (18.38 KiB) 177-mal heruntergeladen
Gruß,
mikele
mikele
-
- Beiträge: 6
- Registriert: So 4. Jan 2015, 16:45
Re: Aktuelle Tabellenzeile nutzen / Zahlenfomat per Makro
Hallo Mikele,
das große Geschütz trifft ins Schwarze. Hut ab und Respekt das war ja wohl etwas Arbeit und sieht alles sehr sehr gut aus. Funkionalität perfekt passend.
Leider habe ich noch ein Problem (Schande über mein Haupt): Ich kann das Makro nicht in meine eigene Datei einfügen. Ich bekommen den Fehler:
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.lang.IllegalArgumentException
Message: .
Und zwar in dieser Zeile: oTC.paraStyleName="Tabelle_allgemein"
Woran kann das liegen und was kann ich dagegen tun?
Vielen Dank!
das große Geschütz trifft ins Schwarze. Hut ab und Respekt das war ja wohl etwas Arbeit und sieht alles sehr sehr gut aus. Funkionalität perfekt passend.
Leider habe ich noch ein Problem (Schande über mein Haupt): Ich kann das Makro nicht in meine eigene Datei einfügen. Ich bekommen den Fehler:
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.lang.IllegalArgumentException
Message: .
Und zwar in dieser Zeile: oTC.paraStyleName="Tabelle_allgemein"
Woran kann das liegen und was kann ich dagegen tun?
Vielen Dank!
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.