[Gelöst]Makro funktioniert nur manuell

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

Moderator: Moderatoren

Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

[Gelöst]Makro funktioniert nur manuell

Beitrag von Jörg »

Hallo Fachleute,
also bei mir klappt der Code

Code: Alles auswählen

sub Zuzahlung()
If ThisComponent.Sheets().getByIndex(2).getCellRangeByName("J8").Value < 18 Then
mycell =ThisComponent.Sheets().getByIndex(2).getCellRangeByName("A12")
mycell.string = "O"
end if
end sub
nur bei manueller Ausführung. Nix automatisch.
Hinweis: in Zelle "J8" steht die Formel:

Code: Alles auswählen

=WENN(D10="";"";(JAHRE(D10;HEUTE();0)))
Hat jemand ne Idee?

Vielen Dank!

_____________________
Moderationshinweis
Ich habe deinen Beitrag abgetrennt und einen neuen Thread dafür angelegt. Zukünftig bitte nicht mehr an 'nen x-beliebigen Thread anhängen, schon gar nicht, wenn der nix mit dem eigenen Anliegen zu tun hat.
lorbass, Moderator
Zuletzt geändert von Jörg am Fr, 29.12.2017 10:03, insgesamt 1-mal geändert.
Gruß Jörg

Win 10 Pro AOO 4.1.15
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro funktioniert nur manuell

Beitrag von F3K Total »

Moin,
wie startest Du denn den Makro?
Hast du es an ein Tabellenereignis gehängt?

Gruß R
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Makro funktioniert nur manuell

Beitrag von Jörg »

Jo Hallo,
@ lorbass,
danke fürs Abtrennen meines Beitrages.
Ich dachte schon, dass mein Anliegen dazu passt.
[urlhttp://de.openoffice.info/viewtopic.php?f=18&t=68708][/url]
denn der Code von Stephan

Code: Alles auswählen

If ThisComponent.Sheets().getByIndex(2).getCellRangeByName("J8").Value = 1234 Then
....
stammt aus eben diesem thread. nur dass in meinem Code anstatt "= 1234" "< 18" steht.
Und ich verfolge das gleiche Ziel.
@ F3K Total
nein eben (noch) nicht, weil davon im o.g. Thread keine Rede war.
Aber meine Frage diesbezüglich wäre:
Welches Tabellenereignis wäre sinnvoll und wie machbar?
Grund der Frage:
Das Ereignis "Inhalt geändert" wird insofern schwierig (aus meiner Laiensicht), da ständig in der Tabelle Eingaben gemacht werden und somit sich der Inhalt ständig ändert.
Die Tabelle dient als Eingabeformular.
Geht eventuell das Ereignis "Auswahl geändert"?
Über ein Listenfeld in "I5" werden bsp. Datensätze aufgerufen.
da weiß ich aber nicht, was ich am Code ändern muß, denn so funktioniert er auch bei diesem Ereignis nicht.
Hab auch schon versucht, das Makro über Daten-> Gültigkeit zuzuordnen. Leider ohne Erfolg.
Gruß Jörg

Win 10 Pro AOO 4.1.15
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro funktioniert nur manuell

Beitrag von F3K Total »

Jo,
das Ereignis "Inhalt geändert" löst das Makro immer dann aus, wenn irgendetwas auf der Tabelle geändert wird. Ist aber doch nicht schlimm.
Besser wäre, wenn du mal erklären würdest, was du überhaupt mit dem Makro erreichen willst, nach meiner Einschätzung läßt sich das Problem auch ohne Makro lösen.
Gruß R
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Makro funktioniert nur manuell

Beitrag von Jörg »

Hallo F3K,
erstmal Frohe Weihnachten :) ,
Habe es wirklich noch mal mit "Inhalt geändert" ausprobiert. Habe dabei festgestellt, dass, wenn sich der Inhalt einer Zelle per Formel oder Makro ändert, dies nicht als Änderung "wahrgenommen" wird. Auch deshalb schien es nicht zu funktionieren. Erst bei einer manuellen Eingabe schlägt das o.g. Makro an.Dann ist es in der Tat egal, wie oft sich der Inhalt ändert, denn die Bedingung < 18 bleibt ja solange die Eingaben ins Formular abgeschlossen sind und ein neuer "Fall" bearbeitet wird.
Insofern sieht mein Makro jetzt so aus, dem Tabellenereignis "Inhalt geändert" zugeordnet:

Code: Alles auswählen

sub Zuzahlung()
If ThisComponent.Sheets().getByIndex(2).getCellRangeByName("J8").Value < 18 and ThisComponent.Sheets().getByIndex(2).getCellRangeByName("J8").Value <> 0 Then
azuzahl =ThisComponent.Sheets().getByIndex(2).getCellRangeByName("A12")
azuzahl.string = "O"
end if
end sub
"<>0" deshalb, weil nach Übertragen der Eingaben des Formulars, der Wert in "J8" auf "Null" springt. Der Wert in "A12" ist standardmäßig auf "X" eingestellt.
Abschließend:
Natürlich geht es, das alles über ein Markierfeld zu machen. Hatte und habe es auch noch so, da es bei ">18" Ausnahmen gibt.
Aber, na ja. Wollte es hinbekommen.
Falls Du aber noch einen anderen Vorschlag hast, gerne.
Ansonsten würd ich das Thema demnächst als (gelöst) markieren.
Guten Rutsch!!!
Gruß Jörg

Win 10 Pro AOO 4.1.15
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro funktioniert nur manuell

Beitrag von Stephan »

Habe es wirklich noch mal mit "Inhalt geändert" ausprobiert. Habe dabei festgestellt, dass, wenn sich der Inhalt einer Zelle per Formel oder Makro ändert, dies nicht als Änderung "wahrgenommen" wird.
Wenn Du bereits die Zelländerung per Makro machst, wozu muss dann das andere Makro überhaupt von einem EReignis aufgerufen werden, statt es gleich direkt, aus dem ändernden Makro heraus, aufzrufen?


Gruß
Stephan
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro funktioniert nur manuell

Beitrag von F3K Total »

Hi,
nochmal:
Besser wäre, wenn du mal erklären würdest, was du überhaupt mit dem Makro erreichen willst, nach meiner Einschätzung läßt sich das Problem auch ohne Makro lösen.
Bitte beschreibe verbal, was passieren soll.
Z.b. so:
Wenn der Zellwert in J8 kleiner als 18 und nicht 0 ist, soll in Zelle A12 ein "O" stehen, sonst soll in Zelle A12 ... (ich nehme mal "M" an) stehen.
Das ginge einfach ohne Makro, mit dieser Formel in A12:

Code: Alles auswählen

=WENN(UND(J8<18;J8<>0);"O";"M")
R
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Makro funktioniert nur manuell

Beitrag von Jörg »

Hallo,
danke für Eure Hinweise.
@Stephan
Stephan hat geschrieben: Mo, 25.12.2017 21:13 Wenn Du bereits die Zelländerung per Makro machst, wozu muss dann das andere Makro überhaupt von einem EReignis aufgerufen werden, statt es gleich direkt, aus dem ändernden Makro heraus, aufzrufen?
Geht in meinem Fall nicht wirklich. Habe mehrere Makros (10), die zum Eintragen vordefinierter Werte bzw. unterschiedlicher Formeln (je nach Bedarf alte/neue Preisliste) ausgelöst durch Schaltflächen dienen.
Dabei ist es immer von Fall zu Fall anders, welche Makros ich im Konkreten benötige.
Das hieße, dass ich den Code an jedes der 10 ranhängen müßte. O.K. ist nicht viel, eine Zeile (Start.Zuzahlung(Modul.Makro)).
@F3K
F3K Total hat geschrieben: Mo, 25.12.2017 23:12 Wenn der Zellwert in J8 kleiner als 18 und nicht 0 ist, soll in Zelle A12 ein "O" stehen, sonst soll in Zelle A12 ... (ich nehme mal "M" an) stehen.

Ja so ist es.
"O" = Zuzahlungsbefreit
"M" = Zuzahlungspflichtig (bei mir "X")
Je nachdem was in "A12" steht, erfolgt eine entsprechende Berechnung

Code: Alles auswählen

=WENN(E12<>"privat";WENN(E12<>"Beihilfe";WENN(E12<>"BG";WENN(A12="X";SUMME(J16:J20)+10;""))))
Nun ist es aber so:
Patienten unter 18 sind generell zuzahlungsbefreit.
Patienten über 18 können zuzahlungsbefreit sein, also "O". Ich müßte dann die Formel in "A12" überschreiben und dann meinetwegen per Makro wieder einfügen.
Insofern denke ich, dass die Verwendung "Tabellenereignis" geeignet ist.
Meine Frage an die Praktiker wäre allerdings:
Es macht glaube ich vorliegenden Fall wohl keinen Unterschied. Aber wann kommt vorteilhafterweise welches Ereignis zum Einsatz? "Auswahl geändert" oder "Inhalt geändert"?
Gruß Jörg

Win 10 Pro AOO 4.1.15
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro funktioniert nur manuell

Beitrag von F3K Total »

Hallo,
Ich bin nach wie vor davon überzeugt, dass es für dein WENN/DANN Problem kein Makro braucht.
Lade doch einfach ein Beispieldokument hoch, erläutere die Eingabewerte und erkläre, was das Ergebnis sein soll.
So langsam habe ich den Eindruck, dass du es selbst nicht mehr weißt.
Und bitte kein Ergebnis in einer Eingabezelle!
Gruß R
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Makro funktioniert nur manuell

Beitrag von Jörg »

Hallo,
ich glaub schon, dass ich weiß, was ich will.
Ich stell mal mein Dokument rein.
Reihenfolge der Eingaben.
Tabelle: Eingabemaske Abr_Rechnung
1. Schaltfläche neben "I5": SuchNamen eingeben
2. Listenfeld "I5" entspr. Pat. wählen
3. Eintragen: Markierfelder "Zuzahlungspflichtig", "Frequenz pro Woche", Erst.-,Folge.- oder Verordnung ausserhalb ..."
4. Je nach Art. Schaltflächen "Standardverordnungen"
5. Rezeptdatum (hier krieg ich u.U. die Meldung, dass aktuelle Preisliste in Bezug auf das Rezeptdatum gültig ist)
6. Abschluß aller Eingaben mit Schaltfläche "Eingaben fertig". Damit erfolgt dann auch das Setzen des Standardwertes "X" in A12
In der Regel werden dabei fehlende oder unplausible Eingaben angemeckert 8) (z.Bsp. HM-Check)
Test_Formel.ods
(186.33 KiB) 169-mal heruntergeladen
Na denn viel Spaß!
Gruß Jörg

Win 10 Pro AOO 4.1.15
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Makro funktioniert nur manuell

Beitrag von Jörg »

P.s. im Dokument heißen alle "Meier"
Gruß Jörg

Win 10 Pro AOO 4.1.15
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro funktioniert nur manuell

Beitrag von F3K Total »

Hi,
ist ja alles ganz schick, ausser, dass die Information fehlt, wann ein Patient zuzahlungspflichtig/nicht zuzahlungspflichtig ist.
Also, wenn ich das richtig verstanden habe, hängt es vom Alter und der Eintragung im Feld E12 "Krankenkasse" ab.
Bitte beschreibe dies noch einmal genau.
EDIT:
Mit der Annahme, das man entweder unter 18 oder Mitglied von "privat","Beihilfe" oder "BG" ist,
geht diese Formel in A12

Code: Alles auswählen

=WENN(ODER(J8<18;E12="privat";E12="Beihilfe";E12="BG");"O";"X")
und diese in J22

Code: Alles auswählen

=WENN(A12="X";SUMME(J16:J20)+10;"")
Gruß R
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Makro funktioniert nur manuell

Beitrag von Jörg »

Hallo,
erstmal Danke für Deine Geduld.
F3K Total hat geschrieben: Mi, 27.12.2017 18:29 Also, wenn ich das richtig verstanden habe, hängt es vom Alter und der Eintragung im Feld E12 "Krankenkasse" ab.
jo soweit richtig.
Aber auch:
Wenn eine bestimmte Belastungsgrenze ( 1% vom Einkommen) erreicht ist, kann die GKV den Beitragszahler auf Antrag von der Zuzahlungspflicht befreien.
Diese Angabe ist dann auf dem Verordnungsformular (Grundlage für die Erfassung) oder Chipkarte vermerkt.
Ergo muß ich in "A12" variabel sein, wegen "J22".
Deshalb erscheint mir die Lösung per Makro hilfreich.
Gruß Jörg

Win 10 Pro AOO 4.1.15
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: [Gelöst]Makro funktioniert nur manuell

Beitrag von Jörg »

Hallo,
vielen Dank für Eure Beiträge.
Wünsche einen Guten Rutsch. :)
Gruß Jörg

Win 10 Pro AOO 4.1.15
Antworten