Automatisch neue Zeile einfügen

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

Moderator: Moderatoren

kum
Beiträge: 4
Registriert: Sa, 27.02.2010 19:58

Automatisch neue Zeile einfügen

Beitrag von kum »

Hallo,

ich suche nach einer Möglichkeit unter OOo eine Zeile automatisch einzufügen z.B. via Makro.
Beispiel:
Erfolgt eine Eingabe in der Zelle B14, soll automatisch die Formatierung und Formeln der Zeile 14 in Zeile 15 kopiert werden, erfolgt danach eine Eingabe in Zelle B15, soll automatisch die Formatierung und Formeln der Zeile 15 in Zeile 16 kopiert werden u.s.w.

Ich hoffe es ist einigermaßen verständlich.

Gruß Maik
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Automatisch neue Zeile einfügen

Beitrag von Charly »

Hallo!

Die letzte benützte Zeile in die folgende Zeile zu kopieren ist für ein Makro kein Problem.

Das Problem ist nur, dass du es automatisch starten willst. Dazu muss das Makro mit einem Ereignis verbunden werden. Da es in Calc auf Zellenebene kein vordefiniertes Ereignis gibt, muss dazu ein Listener programmiert werden, der mit Öffnen des Dokuments gestartet wird. Da dieser Listener, während des ganzen Arbeitens aktiv ist, muss im Makro genau definiert sein , wann es etwas machen soll und wann nicht, weil es sonst zu unliebsamen Überraschungen kommen kann.

Ich habe mal ein Beispiel programmiert. Hier wird die letzte Zeile (im Moment beschränkt auf Spalte A und B) in die nächste Zeile kopiert, wenn in dieser Zeile die Zelle in Spalte B aktiviert wird, z.B. wenn der Eintrag in der darüberliegenden Zelle mit Enter abgeschlossen wird. Das musst du deinen Wünschen anpassen.

Gruß
Charly
Dateianhänge
Listener_Beispiel_Neue_Zeile.ods
(8.53 KiB) 470-mal heruntergeladen
kum
Beiträge: 4
Registriert: Sa, 27.02.2010 19:58

Re: Automatisch neue Zeile einfügen

Beitrag von kum »

Danke für deine Mühe.
Aber geht das nicht einfacher. Ich als Laie finde noch nicht einmal die Variable für die aktive Zelle auf das dein Makro reagiert. Im Übrigen soll nur die Formatierung in die nächste Zeile kopiert werden.
Diese Funktion ist für mein "Kassenbuch" interessant, damit es sich nach Bedarf automatisch erweitert. Siehe Beispiel.
Wenn ich mit Google nach solchen Funktionen suche, finde ich viel über Excel Makros und dort sieht das auf den ersten Blick nicht so kompliziert aus.

Kannst du mir das noch etwas besser erklären oder gibt es Alternativen?

Gruß Maik
Dateianhänge
Beispiel.ods
Beispiel
(14.05 KiB) 244-mal heruntergeladen
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Automatisch neue Zeile einfügen

Beitrag von Charly »

Hallo!

Ein Listener ist kompliziert. Ich habe in deine Datei ein Makro mit Schaltfläche eingefügt. Bei Drücken der Schaltfläche wird die letzte Zeile kopiert und in die folgende Zeile die Formate und Formeln ohne Werte kopiert. Die Kopierfunktion und Inhalte einfügen habe ich durch den Makrrekorder erzeugt und mit normalen Code ergänzt.

Vielleicht genügt das.

Gruß
Charly
Dateianhänge
Beispiel.ods
(16.88 KiB) 566-mal heruntergeladen
kum
Beiträge: 4
Registriert: Sa, 27.02.2010 19:58

Re: Automatisch neue Zeile einfügen

Beitrag von kum »

Hallo,

danke für deine große Hilfe. Ich muss leider feststellen das ich den Code noch nicht einmal ansatzweise verstehe. Aber die Funktion von deinem letzten Makro ist sehr gut.
Ich hätte aber noch ein paar Verbesserungsideen die ich mit meinem Kenntnisstand noch nicht umsetzten kann:

- Kann man die Formatierung und die Formel in dem Makro fest vorgeben oder immer nur von z.B. Zeile 13 kopieren?
- Wenn man nun noch den Listener noch hinzu programmiert welche unliebsamen Überraschungen können dann noch auftreten (siehe 1. Beitrag von dir)?
- In deinem Dokument sind zwei Makros, werden beide benötigt?

Gruß Maik
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Automatisch neue Zeile einfügen

Beitrag von Charly »

Hallo!
Kann man die Formatierung und die Formel in dem Makro fest vorgeben oder immer nur von z.B. Zeile 13 kopieren?
Du kannst das natürlich im Makro auch fest hinterlegen. Aber es ist einfacher wenn du eine vorhandene Formatierung kopierst. Das heißt, in dem verwendeten Dokument, muss zumindestens die erste Datenzeile entsprechend formatiert sein.
Wenn man nun noch den Listener noch hinzu programmiert welche unliebsamen Überraschungen können dann noch auftreten
Ich persönlich ziehe die Button-Lösung vor. Z.B. hatte ich mit der Maus und Markieren von Zellen Probleme.
- In deinem Dokument sind zwei Makros, werden beide benötigt?
Es wird nur ein Makro benötigt. Das Makro "Kopieren", war nur das aufgezeichnete Programm, das ich in das Makro "formate_uebertragen" eingebaut habe. Ich habe es vergessen, vor dem Abschicken zu löschen.

Gruß
Charly
kum
Beiträge: 4
Registriert: Sa, 27.02.2010 19:58

Re: Automatisch neue Zeile einfügen

Beitrag von kum »

Ok. Danke.
Ich werde versuchen das Makro nach deinen Empfehlungen zu ändern.
- Formatierung immer von der zweiten Zeile kopieren
- Schaltflächenlösung beibehalten
- Makro "Kopieren löschen"

Gruß Maik
Antworten