🙏 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. 🤗
[Gelöst] Makro, Werte in nächste Zelle einbauen.
[Gelöst] Makro, Werte in nächste Zelle einbauen.
Hallo, meine Suche ergab leider nicht das was ich suche. Oder ich verstehe es nicht.
Ich habe eine Tabelle mit Namen, Datum, Betrag.
Das sind alles "Feld" und "wenn dann" Befehle.
funktioniert soweit.
Nun möchte ich in einer anderen Tabelle (Liste) Name, Datum, und Betrag mit einem Klick mit einem Makro listen.
Ich ab es nun aufgenommen (erst mal nur "Betrag") den formatiere ich wenn das Makro den Betrag eingefügt hat als Zahl
(selectformat, 1) so das keine Formel auf die Liste kommt, sondern der Betrag.
Nun möchte ich, das bei jedem klicken auf das Makro die nächste freie Zelle (c3.....c4,c5) beschrieben wird.
Ich hab das mit "Row+1" gelesen, bekomme es aber nicht hin.
Ich Liste mal was ich habe, eventuell kann mir auch jemand sagen wie ich dann noch Name und Datum dazu bekomme.
Das Datenblatt (Aktive Sheet) ist 2, die Liste ist 5, Der Rechnungswert ist K48,
Der Name wäre Tabellle2, A11
Das Datum wäre Tabelle2, K13.
nun noch was ich als Makro habe.
sub Rechnungliste
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$K$48"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 5
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value ="$C$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "SelectedFormat"
args7(0).Value = 1
dispatcher.executeDispatch(document, ".uno:ClipboardFormatItems", "", 0, args7())
end sub
Ich habe eine Tabelle mit Namen, Datum, Betrag.
Das sind alles "Feld" und "wenn dann" Befehle.
funktioniert soweit.
Nun möchte ich in einer anderen Tabelle (Liste) Name, Datum, und Betrag mit einem Klick mit einem Makro listen.
Ich ab es nun aufgenommen (erst mal nur "Betrag") den formatiere ich wenn das Makro den Betrag eingefügt hat als Zahl
(selectformat, 1) so das keine Formel auf die Liste kommt, sondern der Betrag.
Nun möchte ich, das bei jedem klicken auf das Makro die nächste freie Zelle (c3.....c4,c5) beschrieben wird.
Ich hab das mit "Row+1" gelesen, bekomme es aber nicht hin.
Ich Liste mal was ich habe, eventuell kann mir auch jemand sagen wie ich dann noch Name und Datum dazu bekomme.
Das Datenblatt (Aktive Sheet) ist 2, die Liste ist 5, Der Rechnungswert ist K48,
Der Name wäre Tabellle2, A11
Das Datum wäre Tabelle2, K13.
nun noch was ich als Makro habe.
sub Rechnungliste
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$K$48"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 5
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value ="$C$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "SelectedFormat"
args7(0).Value = 1
dispatcher.executeDispatch(document, ".uno:ClipboardFormatItems", "", 0, args7())
end sub
Zuletzt geändert von Roland1 am So 16. Jan 2022, 14:04, insgesamt 2-mal geändert.
Gruß Roland
Windows 11, Libre 24,2,7,2
Windows 11, Libre 24,2,7,2
Re: Makro, Werte in nächste Zelle einbauen.
Hallo,
einfacher wäre: Markieren->Kopieren-> Einfügen als...
Wenn es per Makro sein muss:
einfacher wäre: Markieren->Kopieren-> Einfügen als...
Wenn es per Makro sein muss:
Es darf schon ein bisschen konkreter sein: Was (Zellen?) soll wohin geschrieben (Zellen?) werden?Nun möchte ich, das bei jedem klicken auf das Makro die nächste freie Zelle beschrieben wird.
Gruß,
mikele
mikele
Re: Makro, Werte in nächste Zelle einbauen.
Hallo Mikele,
Ich baue ein Button ein.
mit dem Löse ich das Makro aus.
Dann sollte auf "Liste" der Name, das Datum und der Betrag stehen.
So als Steuerbuch.
Da du mit Markieren und kopieren antwortest, wäre es nett das du den Thread nicht einfach nur länger machst.
Ich baue ein Button ein.
mit dem Löse ich das Makro aus.
Dann sollte auf "Liste" der Name, das Datum und der Betrag stehen.
So als Steuerbuch.
Da du mit Markieren und kopieren antwortest, wäre es nett das du den Thread nicht einfach nur länger machst.
Gruß Roland
Windows 11, Libre 24,2,7,2
Windows 11, Libre 24,2,7,2
Re: Makro, Werte in nächste Zelle einbauen.
Hallo Roland,
Naja, hier mal ein Muster auf Basis der Starbasic-API programmiert: Hinweis:
Der Makrorekorder zeichnet nur Dispatch-Kommandos auf und versagt
des Öfteren, weil das dumme Ding keine Gedanken lesen kann.
Da hast Du doch glatt den besseren Programmierer aus dem Rennen geschickt...Da du mit Markieren und kopieren antwortest, wäre es nett das du den Thread nicht einfach nur länger machst.

Naja, hier mal ein Muster auf Basis der Starbasic-API programmiert: Hinweis:
Der Makrorekorder zeichnet nur Dispatch-Kommandos auf und versagt
des Öfteren, weil das dumme Ding keine Gedanken lesen kann.

Gruß
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Re: Makro, Werte in nächste Zelle einbauen.
Hallo,
es fehlen immer noch die wesentlichen Informationen, um eine konkrete Anteort zu geben. Dadurch wird der Thread länger ...
es fehlen immer noch die wesentlichen Informationen, um eine konkrete Anteort zu geben. Dadurch wird der Thread länger ...
Gruß,
mikele
mikele
Re: Makro, Werte in nächste Zelle einbauen.
Guten Morgen,
Bin gerade daran "@craig" elemente zu verstehen. Da ist schon viel richtiges dabei. Muß es nur umsetzen.
@Mikele, ich wei0 nicht genau was fehlt.
Ich habe eine Adresstabelle, die füge ich mit Feldbefehl in die Rechnung.
so mach ich es auch mit den Artikeln.
Das Datum funktioniert automatisch.
Und das Ergebnis resultiert dann aus den Artikeln.
Diese frisch eingegebenen Daten möchte ich abgreifen und als Liste speichern,
Im Moment funktioniert es nur mit dem Ergebnis und schreibt sich auch immer in die selbe Zeile.
Ich hänge die Adtei mal an was ich machen möchte. Also Rechnungs tabelle ist der start, dann sollte nach einem Klick auf ein Button es in die Liste übertragen werden.
Bin gerade daran "@craig" elemente zu verstehen. Da ist schon viel richtiges dabei. Muß es nur umsetzen.
@Mikele, ich wei0 nicht genau was fehlt.
Ich habe eine Adresstabelle, die füge ich mit Feldbefehl in die Rechnung.
so mach ich es auch mit den Artikeln.
Das Datum funktioniert automatisch.
Und das Ergebnis resultiert dann aus den Artikeln.
Diese frisch eingegebenen Daten möchte ich abgreifen und als Liste speichern,
Im Moment funktioniert es nur mit dem Ergebnis und schreibt sich auch immer in die selbe Zeile.
Ich hänge die Adtei mal an was ich machen möchte. Also Rechnungs tabelle ist der start, dann sollte nach einem Klick auf ein Button es in die Liste übertragen werden.
- Dateianhänge
-
- Rechnung_test.ods
- (31.32 KiB) 203-mal heruntergeladen
Gruß Roland
Windows 11, Libre 24,2,7,2
Windows 11, Libre 24,2,7,2
Re: Makro, Werte in nächste Zelle einbauen.
Hallo,
und schon wird es einfach ...
und schon wird es einfach ...
Code: Alles auswählen
Sub Main
'Zugriff auf Dokument und Tabellen
oDoc=ThisComponent
oRg=oDoc.Sheets.getByName("Rechnung")
oListe=oDoc.Sheets.getByName("Liste")
'erste freie Zeile in Liste finden
n=oListe.Columns(0).queryEmptyCells.RangeAddresses(0).StartRow
'Daten auslesen und in Array sammeln
aDaten=Array(Array(oRg.getCellRangeByName("A11").String,oRg.getCellRangeByName("K13").Value,oRg.getCellRangeByName("K48").Value))
'Daten schreiben
oListe.getCellRangebyPosition(0,n,2,n).setDataArray(aDaten)
End Sub
Gruß,
mikele
mikele
Re: Makro, Werte in nächste Zelle einbauen.
Asche auf mein Haupt,
Gaaanz große Entschuldigung an Mikele,
(das resultierte aus einem EOS Forum, wo viele meine etwas zu wissen, und den Threed unnötig verlängern.)
Das war genau das was ich wollte, super. Sorry.... passt sehr gut.
Super schnelle Hilfe.
Vielen danke auch an craig.
Gaaanz große Entschuldigung an Mikele,

(das resultierte aus einem EOS Forum, wo viele meine etwas zu wissen, und den Threed unnötig verlängern.)
Das war genau das was ich wollte, super. Sorry.... passt sehr gut.
Super schnelle Hilfe.
Vielen danke auch an craig.
Gruß Roland
Windows 11, Libre 24,2,7,2
Windows 11, Libre 24,2,7,2
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.