Seite 1 von 1

[Gelöst]Makro funktioniert nur manuell

Verfasst: Sa, 23.12.2017 15:53
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

Re: Makro funktioniert nur manuell

Verfasst: Sa, 23.12.2017 17:48
von F3K Total
Moin,
wie startest Du denn den Makro?
Hast du es an ein Tabellenereignis gehängt?

Gruß R

Re: Makro funktioniert nur manuell

Verfasst: Sa, 23.12.2017 19:23
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.

Re: Makro funktioniert nur manuell

Verfasst: Mo, 25.12.2017 13:20
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

Re: Makro funktioniert nur manuell

Verfasst: Mo, 25.12.2017 15:49
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!!!

Re: Makro funktioniert nur manuell

Verfasst: Mo, 25.12.2017 21:13
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

Re: Makro funktioniert nur manuell

Verfasst: Mo, 25.12.2017 23:12
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

Re: Makro funktioniert nur manuell

Verfasst: Mi, 27.12.2017 12:37
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"?

Re: Makro funktioniert nur manuell

Verfasst: Mi, 27.12.2017 13:22
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

Re: Makro funktioniert nur manuell

Verfasst: Mi, 27.12.2017 16:32
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) 170-mal heruntergeladen
Na denn viel Spaß!

Re: Makro funktioniert nur manuell

Verfasst: Mi, 27.12.2017 16:33
von Jörg
P.s. im Dokument heißen alle "Meier"

Re: Makro funktioniert nur manuell

Verfasst: Mi, 27.12.2017 18:29
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

Re: Makro funktioniert nur manuell

Verfasst: Do, 28.12.2017 10:12
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.

Re: [Gelöst]Makro funktioniert nur manuell

Verfasst: Fr, 29.12.2017 10:04
von Jörg
Hallo,
vielen Dank für Eure Beiträge.
Wünsche einen Guten Rutsch. :)