🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Makro Hilfe
Makro Hilfe
Hallo zusammen,
mein Makro "SchreibeWerteAbhaengigVonB3" soll die Werte aus C9, D9, E9 die in Abhängigkeit von der Auswahl Zelle B3 sich mit Zahlen aus dem Quell-Bereich füllen, dann in den Bereich C12:E14 schreiben.
z.B.
bei Auswahl "Sonne" in B3, sollen die Zahlen für "Sonne" von C9 in C12, D9 in D12 und E9 in D12 geschrieben werden
bei Auswahl "Mond" in B3, sollen die Zahlen für "Mond" von C9 in C13, D9 in D13 und E9 in D13 geschrieben werden
bei Auswahl "Mond" in B3, sollen die Zahlen für "Sterne" von C9 in C14, D9 in D14 und E9 in D14 geschrieben werden
Es werden auch Zahlen in die jeweiligen Zellen mittels Makro geschrieben aber eben nicht die welche sich bei Makroausführung in den Zellen C9, D9 und E9 stehen.
Ich habe leider keine Idee oder Ansatz zur Problemlösung und wäre für Unterstützung dankbar.
Viele Grüße
mein Makro "SchreibeWerteAbhaengigVonB3" soll die Werte aus C9, D9, E9 die in Abhängigkeit von der Auswahl Zelle B3 sich mit Zahlen aus dem Quell-Bereich füllen, dann in den Bereich C12:E14 schreiben.
z.B.
bei Auswahl "Sonne" in B3, sollen die Zahlen für "Sonne" von C9 in C12, D9 in D12 und E9 in D12 geschrieben werden
bei Auswahl "Mond" in B3, sollen die Zahlen für "Mond" von C9 in C13, D9 in D13 und E9 in D13 geschrieben werden
bei Auswahl "Mond" in B3, sollen die Zahlen für "Sterne" von C9 in C14, D9 in D14 und E9 in D14 geschrieben werden
Es werden auch Zahlen in die jeweiligen Zellen mittels Makro geschrieben aber eben nicht die welche sich bei Makroausführung in den Zellen C9, D9 und E9 stehen.
Ich habe leider keine Idee oder Ansatz zur Problemlösung und wäre für Unterstützung dankbar.
Viele Grüße
- Dateianhänge
-
- Test_Makro.ods
- (17.16 KiB) 299-mal heruntergeladen
Ubuntu 22.04.2 LTS / Windows 11 / LO 7.3.7.2
Re: Makro Hilfe
Dein Hauptproblem ist die »ZUFALLSZAHL()« -funktion im Quellbereich, die jedesmal neue Zahlen generiert wenn sich sonst irgendetwas ändert, du möchtest an der Stelle: »ZUFALLSZAHL.NF()« verwenden.
Ansonsten wie immer: grottenschlechter BASIC-code!!!
Ansonsten wie immer: grottenschlechter BASIC-code!!!
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Makro Hilfe
Hallo Karolus,
in der Testdatei habe ich Zufallszahl verwendet weil in der Original Datei die Werte sich auch entsprechend ändern wenn ich in B3 den Suchbegriff ändere.
Zum Code nur soviel, ich bin kein Programmierer und in diesem Fall hat Copilot den Code erzeugt.
Danke schon mal für deine Datei, kann ich aber erst morgen anschauen weil ich unterwegs bin.
VG
in der Testdatei habe ich Zufallszahl verwendet weil in der Original Datei die Werte sich auch entsprechend ändern wenn ich in B3 den Suchbegriff ändere.
Zum Code nur soviel, ich bin kein Programmierer und in diesem Fall hat Copilot den Code erzeugt.
Danke schon mal für deine Datei, kann ich aber erst morgen anschauen weil ich unterwegs bin.
VG
Ubuntu 22.04.2 LTS / Windows 11 / LO 7.3.7.2
Re: Makro Hilfe
Hallo,
in Abhängigkeit von B3 der Tabelle1 werden Daten mittels SVERWEIS() in der Tabelle1 aus verschiedenen anderen Tabellen abgefragt und daraus Summen gebildet, welche ich dann ja mittels Makro in den entsprechenden Bereich schreiben will.
Dazu wird über "Tabellen Ereignisse/Inhalt geändert" das Makro ausgeführt, welches dann diese Summen aus C9, D9 und E9 wie in der Test Datei in den Bereich C12:E14 schreiben soll, was bei mir aber zu falschen Zahlen führt die mittels Makro geschrieben werden.
Mit der Test.ods hatte ich versucht das Problem nachzustellen und hier kam es zu dem scheinbar gleichem Verhalten/Problem aber wie karolus ja schreibt lag das hier an der Funktion ZUFALLSZAHL() welche immer neue Zahlen generiert hat.
In meiner eigentlichen Datei arbeite ich ja nicht mit Zufallszahlen und habe dennoch das Problem. Wenn ich das Makro aber nun anstatt über "Tabellen Ereignisse/Inhalt geändert" automatisch auszuführen manuell ausführe, werden auch die korrekten Daten ausgelesen und geschrieben. Daher vermute ich, dass die SVERWEIS Abfragen während dessen das Makro automatisch ausgeführt wird noch nicht zu 100% abgeschlossen sind und somit das Makro schon Daten ausliest und schreibt welche zu diesem Zeitpunkt eben noch nicht stimmen.
Wäre das ein nachvollziehbarer Zusammenhang oder liegt die Ursache doch eher wo anders?
Wie zuvor geschrieben bin ich leider kein Programmierer und versuche durch die Unterstützung hier im Forum, durch Google oder auch KI zu einer Lösung zu kommen. Daher ist der Code meist ein zusammengebasteltes Ergebnis. Ich habe auch schon nach freien Tutourials und Kursen gesucht um mich mit dem Thema Makro Programmierung mehr auseinander zu setzen, aber bisher nichts wirklich gefunden. Teure Kurse kommen für mich als Privatanwender da leider nicht in Frage.
Wenn jemand gute Tutourials für Anfänger kennt gerne mal mitteilen. Danke!
VG
in Abhängigkeit von B3 der Tabelle1 werden Daten mittels SVERWEIS() in der Tabelle1 aus verschiedenen anderen Tabellen abgefragt und daraus Summen gebildet, welche ich dann ja mittels Makro in den entsprechenden Bereich schreiben will.
Dazu wird über "Tabellen Ereignisse/Inhalt geändert" das Makro ausgeführt, welches dann diese Summen aus C9, D9 und E9 wie in der Test Datei in den Bereich C12:E14 schreiben soll, was bei mir aber zu falschen Zahlen führt die mittels Makro geschrieben werden.
Mit der Test.ods hatte ich versucht das Problem nachzustellen und hier kam es zu dem scheinbar gleichem Verhalten/Problem aber wie karolus ja schreibt lag das hier an der Funktion ZUFALLSZAHL() welche immer neue Zahlen generiert hat.
In meiner eigentlichen Datei arbeite ich ja nicht mit Zufallszahlen und habe dennoch das Problem. Wenn ich das Makro aber nun anstatt über "Tabellen Ereignisse/Inhalt geändert" automatisch auszuführen manuell ausführe, werden auch die korrekten Daten ausgelesen und geschrieben. Daher vermute ich, dass die SVERWEIS Abfragen während dessen das Makro automatisch ausgeführt wird noch nicht zu 100% abgeschlossen sind und somit das Makro schon Daten ausliest und schreibt welche zu diesem Zeitpunkt eben noch nicht stimmen.
Wäre das ein nachvollziehbarer Zusammenhang oder liegt die Ursache doch eher wo anders?
Wie zuvor geschrieben bin ich leider kein Programmierer und versuche durch die Unterstützung hier im Forum, durch Google oder auch KI zu einer Lösung zu kommen. Daher ist der Code meist ein zusammengebasteltes Ergebnis. Ich habe auch schon nach freien Tutourials und Kursen gesucht um mich mit dem Thema Makro Programmierung mehr auseinander zu setzen, aber bisher nichts wirklich gefunden. Teure Kurse kommen für mich als Privatanwender da leider nicht in Frage.
Wenn jemand gute Tutourials für Anfänger kennt gerne mal mitteilen. Danke!
VG
Ubuntu 22.04.2 LTS / Windows 11 / LO 7.3.7.2
Re: Makro Hilfe
Schau Dir mal das von Pitonyak et al. an.
Ich halte das für das beste und aktuellste, das ich bisher gefunden habe.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO
Re: Makro Hilfe
Hier hätte ich gerne mal ne plausible Erklärung wieso das per Makro gemacht werden soll und nicht per Formel!
Vielleicht weil dein Makro nicht abfragt ob das Ereignis: Inhalt geändert aus B3 ausgelöst wurde, und sofort abbricht falls das nicht der Fall ist??Tschubi hat geschrieben: ↑So 26. Mai 2024, 11:07Dazu wird über "Tabellen Ereignisse/Inhalt geändert" das Makro ausgeführt, welches dann diese Summen aus C9, D9 und E9 wie in der Test Datei in den Bereich C12:E14 schreiben soll, was bei mir aber zu falschen Zahlen führt die mittels Makro geschrieben werden.
Dabei hast du noch das Glück daß Inhalt geändert nur auf manuelle Änderungen reagiert nicht aber auf Änderungen von Formel-ergebnissen… ansonsten hättest dur dir da bereits eine klassische Endlosschleife mit der automatischen Neuberechnung von ZUFALLSZAHL()⇒triggert Inhalt geändert ⇒triggert Neuberechnung ………
eingehandelt, die du nur noch mittels Taskmanager und abschiessen von sOffice beenden könntest.
Nein!Tschubi hat geschrieben: ↑So 26. Mai 2024, 11:07In meiner eigentlichen Datei arbeite ich ja nicht mit Zufallszahlen und habe dennoch das Problem. Wenn ich das Makro aber nun anstatt über "Tabellen Ereignisse/Inhalt geändert" automatisch auszuführen manuell ausführe, werden auch die korrekten Daten ausgelesen und geschrieben. Daher vermute ich, dass die SVERWEIS Abfragen während dessen das Makro automatisch ausgeführt wird noch nicht zu 100% abgeschlossen sind und somit das Makro schon Daten ausliest und schreibt welche zu diesem Zeitpunkt eben noch nicht stimmen.
Wäre das ein nachvollziehbarer Zusammenhang oder liegt die Ursache doch eher wo anders?
Tut denn die in meiner letzten Antwort angehängte Sonne_Mond_Sterne.ods das was du wünscht?
Der Code (offensichtlich python) dazu:
Code: Alles auswählen
def change_on_b3( event ):
sheet = event.Spreadsheet
if event.AbsoluteName == f"${sheet.Name}.$B$3":
in_range = sheet["E3:G5"]
out_range = sheet["C12:E14"]
i = ['Sonne', 'Mond', 'Sterne'].index(event.String)
out_range[i,:].DataArray = in_range[i,:].DataArray
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Makro Hilfe
Hallo karolus,
Im dem Beispiel mit Sonne, Monde und Sterne(Auswahl B3) werden aus der Quell-Tabelle(E3:G5) die jeweiligen Summen(in diesem Beispiel sind es die Zufallszahlen) in C9:E9 übernommen. Diese Werte ändern sich ja je nach Auswahl von B3 und ich möchte aber diese Werte eben in einen separaten Bereich C12:E14 schreiben ohne diese sich ändern wenn sich B3 ändert.
Mit einer Formel in Zelle C12 wie z.B. =WENN(B3=B4;C9;) würde es bei Übereinstimmung den Wert aus C9 übernehem, aber auch wieder zurücksetzen sobald die Übereinstimmung nicht mehr gegeben ist. Das funktioniert meiner Ansicht nach nur mittels Makro, oder?
----------------------------
Traceback (most recent call last):
File "C:\Users\User\AppData\Roaming\LibreOffice\4\user\uno_packages\cache\uno_packages\lu219043t1nm.tmp_\apso.oxt\python\apso.py", line 933, in exec_edit
open_script(self.settings, url, lineno, 0)
File "C:\Users\User\AppData\Roaming\LibreOffice\4\user\uno_packages\cache\uno_packages\lu219043t1nm.tmp_\apso.oxt\python\apso.py", line 99, in open_script
opendefaulteditor(uno.fileUrlToSystemPath(url))
File "C:\Users\User\AppData\Roaming\LibreOffice\4\user\uno_packages\cache\uno_packages\lu219043t1nm.tmp_\apso.oxt\python\apso.py", line 110, in opendefaulteditor
sub_call(('xdg-open', filepath))
File "C:\Program Files\LibreOffice\program\python-core-3.8.18\lib\subprocess.py", line 340, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Program Files\LibreOffice\program\python-core-3.8.18\lib\subprocess.py", line 858, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Program Files\LibreOffice\program\python-core-3.8.18\lib\subprocess.py", line 1327, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden
----------------------------
VG
Die Werte in den Zellen C9, D9 und E9 sind Summen welche aus der Tabelle stammen die mittels SVERWEIS() eben in Abhängigkeit von der Auswahl in B3 gebildet werden.Hier hätte ich gerne mal ne plausible Erklärung wieso das per Makro gemacht werden soll und nicht per Formel!
Im dem Beispiel mit Sonne, Monde und Sterne(Auswahl B3) werden aus der Quell-Tabelle(E3:G5) die jeweiligen Summen(in diesem Beispiel sind es die Zufallszahlen) in C9:E9 übernommen. Diese Werte ändern sich ja je nach Auswahl von B3 und ich möchte aber diese Werte eben in einen separaten Bereich C12:E14 schreiben ohne diese sich ändern wenn sich B3 ändert.
Mit einer Formel in Zelle C12 wie z.B. =WENN(B3=B4;C9;) würde es bei Übereinstimmung den Wert aus C9 übernehem, aber auch wieder zurücksetzen sobald die Übereinstimmung nicht mehr gegeben ist. Das funktioniert meiner Ansicht nach nur mittels Makro, oder?
Das weiß ich schon mal nicht wie das geht und deshalb kann das durchaus sein. Weiß nicht wie ich das prüfen könnte.Vielleicht weil dein Makro nicht abfragt ob das Ereignis: Inhalt geändert aus B3 ausgelöst wurde, und sofort abbricht falls das nicht der Fall ist??
Danke für den Hinweis!Dabei hast du noch das Glück daß Inhalt geändert nur auf manuelle Änderungen reagiert nicht aber auf Änderungen von Formel-ergebnissen… ansonsten hättest dur dir da bereits eine klassische Endlosschleife mit der automatischen Neuberechnung von ZUFALLSZAHL()⇒triggert Inhalt geändert ⇒triggert Neuberechnung ……… eingehandelt, die du nur noch mittels Taskmanager und abschiessen von sOffice beenden könntest.
Hm, habe versucht dein Phyton script in meine Datei zu integrieren und anzupassen. Dazu habe ich die Erweiterung APSO 1.3.3.2 installiert um Phyton scripte bearbeiten und verwalten zu können, aber weit bin ich nicht gekommen auf Grund folgender Fehlermeldung.Tut denn die in meiner letzten Antwort angehängte Sonne_Mond_Sterne.ods das was du wünscht?
----------------------------
Traceback (most recent call last):
File "C:\Users\User\AppData\Roaming\LibreOffice\4\user\uno_packages\cache\uno_packages\lu219043t1nm.tmp_\apso.oxt\python\apso.py", line 933, in exec_edit
open_script(self.settings, url, lineno, 0)
File "C:\Users\User\AppData\Roaming\LibreOffice\4\user\uno_packages\cache\uno_packages\lu219043t1nm.tmp_\apso.oxt\python\apso.py", line 99, in open_script
opendefaulteditor(uno.fileUrlToSystemPath(url))
File "C:\Users\User\AppData\Roaming\LibreOffice\4\user\uno_packages\cache\uno_packages\lu219043t1nm.tmp_\apso.oxt\python\apso.py", line 110, in opendefaulteditor
sub_call(('xdg-open', filepath))
File "C:\Program Files\LibreOffice\program\python-core-3.8.18\lib\subprocess.py", line 340, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Program Files\LibreOffice\program\python-core-3.8.18\lib\subprocess.py", line 858, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Program Files\LibreOffice\program\python-core-3.8.18\lib\subprocess.py", line 1327, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden
----------------------------
VG
Ubuntu 22.04.2 LTS / Windows 11 / LO 7.3.7.2
Re: Makro Hilfe
Hallo
Mein frage war ja: »ob sonne_mond_sterne.ods mit so reagiert wie du wünscht«?
Ansonsten… könnte an apso liegen… versuch mal die neuere Version 1.3.3.3 von https://gitlab.com/jmzambon/apso
oder versuchs mal auf deinem Ubuntu statt mit windows
Mein frage war ja: »ob sonne_mond_sterne.ods mit so reagiert wie du wünscht«?
Ansonsten… könnte an apso liegen… versuch mal die neuere Version 1.3.3.3 von https://gitlab.com/jmzambon/apso
oder versuchs mal auf deinem Ubuntu statt mit windows
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Makro Hilfe
Hallo karolus,
die Fehlermeldung sind nachdem in JRE installiert / aktualisiert habe nun nicht mehr gekommen und konnte daher dein Phyton script in meine Datei übernehmen und anpassen.
Bei deinem Script ist die Quelle in_range = sheet["E3:G5"] und der Ausgabebereich out_range = sheet["C12:E14"],
In meiner Datei ist die Quelle der Summen aber in_range = sheet["C9:E9"] welche in Abhängigkeit von B3 nach out_range = sheet["C12:E14"] geschrieben werden sollen.
Daher funktionert dein Script somit nicht bei mir.
VG
die Fehlermeldung sind nachdem in JRE installiert / aktualisiert habe nun nicht mehr gekommen und konnte daher dein Phyton script in meine Datei übernehmen und anpassen.
Bei deinem Script ist die Quelle in_range = sheet["E3:G5"] und der Ausgabebereich out_range = sheet["C12:E14"],
In meiner Datei ist die Quelle der Summen aber in_range = sheet["C9:E9"] welche in Abhängigkeit von B3 nach out_range = sheet["C12:E14"] geschrieben werden sollen.
Daher funktionert dein Script somit nicht bei mir.
VG
Ubuntu 22.04.2 LTS / Windows 11 / LO 7.3.7.2
Re: Makro Hilfe
Hallo
arbeite in der Entwicklungsphase zunächst mit nicht eingebetteten Scripten unter »…Meine Makros«
Wenn dann alles passt bette das Script ggf. ein, und ändere die Ereigniss-verknüpfung entsprechend.
Ach wirklich - wer hätte das gedacht!Daher funktionert dein Script somit nicht bei mir.
arbeite in der Entwicklungsphase zunächst mit nicht eingebetteten Scripten unter »…Meine Makros«
Wenn dann alles passt bette das Script ggf. ein, und ändere die Ereigniss-verknüpfung entsprechend.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
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.