[Gelöst] Makros, Eingabemaske

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

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makros, Eingabemaske

Beitrag von clag »

Hallo Jörg,
die Länge des aufgezeichneten Makros lässt mich vermuten du hast jede Zelle einzeln kopiert und eingefügt,
das kann man machen ist aber sehr umständlich wie du siehst. das liegt an deiner sehr ungünstigen gestalteten EingabeTabelle
leere Zeilen und Spalten sind in zusammenhängenden Datenbereichen zu vermeiden!

guckst du mal hier
62739_Joerg_EingabeTB_2neuerK.ods
(14.31 KiB) 245-mal heruntergeladen
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makros, Eingabemaske

Beitrag von Jörg »

Hallo Clag,
sieht ja wirklich gut aus.
Wollte gerade schreiben, dass ich meine Eingabetabellen nochmal umbauen werde.
Hab mal jetzt zwei Fragen:
1. In der Eingabetabelle stehen die Werte untereinander. Wie bringe ich das Makro dazu, diese Werte nebeneinander in die Kundentabelle einzutragen?
2. In der Kundentabelle stehen nach den Spalten für die Stammdaten noch Spalten, die Formel enthalten werden. Das heißt, daß vor dem Speichern der neuen Kundendaten, erst der Bereich mit den Formeln nach unten gefüllt werden müßte, und dann die neuen Kundendaten in die gleiche Zeile jeweils davor eingetragen werden.
3. Wenn man nicht so wie ich bei meinem ersten Versuch, jede Zelle einzeln kopieren und einfügen will: Habe irgendwo gelesen, dass einfach wie gewohnt mit der Maus markieren nicht funktioniert, sondern mit gedrückter Strg Taste. Hab ich das richtig in Erinnerung?
Werd mal ein bißchen rumprobieren.
Vielen Dank für deine Mühe. Bringt mich wirklich weiter.
Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makros, Eingabemaske

Beitrag von clag »

Hallo Jörg,

das gesuchte Zauberwort ist "Transponieren"
das findest du wenn du "Inhalte einfügen" wählst.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makros, Eingabemaske

Beitrag von Jörg »

Jepp, Transponieren klappt.
Gleichwohl raucht mir schon wieder der Kopf. :(
Wie krieg per "Makro aufzeichnen"dieses "Go to end to Data" erstellt??
Gruß Jörg

Win 10 Pro AOO 4.1.15
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makros, Eingabemaske

Beitrag von clag »

hi

hier kommt zum tragen was ich zuvor sagte
clag hat geschrieben:leere Zeilen und Spalten sind in zusammenhängenden Datenbereichen zu vermeiden!
wenn du innerhalb eines Datenbereiches bist kommst du mit
ctrl + cursor runter an das Ende des Datenbereiches der Spalte (erste leere) Zelle
ctrl + cursor rechts an das Ende des Datenbereiches der Zeile (erste leere) Zelle
ctrl + ende an das Ende des genutzten Datenbereiches des Blattes (letzte Zelle des genutzten Bereiches )

das ist aber kein Geheimnis
findest du unter F1 Tastaturbefehle zum Bewegen in der Tabelle oder so..
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makros, Eingabemaske

Beitrag von Jörg »

Hallo clag,
die eingabemaske funktioniert prima.
Ich habe sie allerdings etwas abgewandelt, Die Schaltfläche "Speichern" kopiert OHNE zu löschen. Das macht die Schaltfläche "Neu" läßt dabei aber die Kundennummer stehen. Wenn alles fertig ist, steht dann dort immer die zuletzt vergebene Nummer. So weiß ich, welches die nächste ist.
Ich denke, daß ich das soweit auch mit der anderen Eingabemaske hinbekomme.
Aber: Hab noch keinen Einstieg gefunden, wie ich ein Makro für die Schaltfläche "Suchen" erstellen kann.
Im Suchfeld (muß ich noch einbauen) will ich 4-... Anfangsbuchstaben eingeben.
Dann klicke ich die Schaltfläche und es soll sich eine Auswahlliste (generiert aus Kundendatei) mit den Treffern öffnen.
Aus dieser Suche wähle ich dann den richtigen und füge diesen dann per Doppelklick in die Eingabemaske ein.
Ich hoffe, ich bin nicht zu ausverschämt.
Du hast mir wirklich schon sehr geholfen.
Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
Karolus
********
Beiträge: 7524
Registriert: Mo, 02.01.2006 19:48

Re: Makros, Eingabemaske

Beitrag von Karolus »

Hallo
Im Suchfeld (muß ich noch einbauen) will ich 4-... Anfangsbuchstaben eingeben.
Dann klicke ich die Schaltfläche und es soll sich eine Auswahlliste (generiert aus Kundendatei) mit den Treffern öffnen.
Aus dieser Suche wähle ich dann den richtigen und füge diesen dann per Doppelklick in die Eingabemaske ein.
Diese Aufgabe wäre einfach und unkompliziert per →Daten→Gültigkeit...Zellbereich plus einer Hilfszelle zur Eingabe der Anfangsbuchstaben lösbar ! - aber leider möchten wir das lieber in kompliziert mit Schaltflächen, Eingabemasken, Makros und pipapo...

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makros, Eingabemaske

Beitrag von Jörg »

Hallo Karolus,
an die Möglichkeit DAten-> Gültigkeit hatte ich, nachdem ich meinen letzten Beitrag geschrieben hatte, auch gedacht, nur wußte ich bisher nichts über die Möglichkeit mit der Hilfszeile. Ich bin halt erst ca. 6 Wochen mit OO beschäftigt, so daß mir nicht alle Funktionalitäten bekannt sind.
Also vielen Dank für den Hinweis. Wenn´s leichter geht, soll es mir nur recht sein. :D

Jörg
Gruß Jörg

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

Re: Makros, Eingabemaske

Beitrag von Jörg »

Hallo Korolus,
Daten-> Gültigkeit->Zellbereich kein Problem.
plus Hilfszelle krieg ich nicht hin.
Wenn Du noch ´nen Tipp hättest ?
Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
Karolus
********
Beiträge: 7524
Registriert: Mo, 02.01.2006 19:48

Re: Makros, Eingabemaske

Beitrag von Karolus »

Hallo

Statt 'referenzbereich' trägst du unter →Daten→Gültigkeit→Zellbereich die Formel ein:

Code: Alles auswählen

WENN(LINKS(referenzbereich;LÄNGE(hilfszelle))=hilfszelle ; referenzbereich ; "")
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makros, Eingabemaske

Beitrag von Jörg »

Hallo Karolus,
komme damit irgendwie nicht zurecht, würde aber diese Sache nach hinten stellen, da ich hier im Forum ein Beispiel gefunden habe (PLZ_Ort-Suche) was ich gut für mich nutzen kann.
Hab mal noch ´ne Frage.
ich hab 12 Markierfelder (Jan., Febr. usw.) Die verknüpfte Zelle (X) will ich so kopieren, daß das (X), wenn ich den Haken rausnehme, in der Zielzelle erhalten bleibt und nicht aktualisiert wird.
Danke für die Mühe.
Jörg
Gruß Jörg

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

Re: Makros, Eingabemaske

Beitrag von Jörg »

Hallo,
das gröbste ist geschafft. Danke noch mal an die Helfer insbesondere an clag.
Ich würde dieses Thema dann erstmal abschließen.
Im Anhang mein Ergebnis.
Gruß Jörg
Dateianhänge
EingabeTB.ods
(106.21 KiB) 197-mal heruntergeladen
Gruß Jörg

Win 10 Pro AOO 4.1.15
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Makros, Eingabemaske

Beitrag von lorbass »

Jörg hat geschrieben:Ich würde dieses Thema dann erstmal abschließen.
Und unter welchen Bedingungen oder bei welchen Gegebenheiten würdest du das tun?

Die Kennzeichnung eines Themas als abgeschlossen soll durch den Fragesteller selbst im „Self Service“-Verfahren erfolgen. Dazu wird der erste Beitrag des Themas mit einem Klick auf Ändern zur Bearbeitung geöffnet. Dem Betreff wird dann ein Hinweis wie »[gelöst]« oder »[geschlossen]« oder »[abgeschlossen]«vorangestellt und der Vorgang mit einem Klick auf Absenden beendet. Und das war's dann auch schon.

Danke für deine Mithilfe
lorbass, Moderator
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makros, Eingabemaske

Beitrag von Jörg »

Hallo, wie im Code zu sehen, habe ich mir eine msgbox erstellt. Meine "alte" Version wie unter Code "sub Abrechnung" funktioniert.
würde aber gern so umbauen, daß bei Antwort=7 (nein) zur Tabelle1 ("Patientendatei) gewechselt wird. Das was ich da eingetragen habe, ist von Dannenhöfer.
Nun ja, so einfach gehts dann wohl doch nicht. :?
2. Das untenstehende Makro ist im wesentlichen mit dem recorder erstellt. Es läuft, aber etwas ruckelig. D.h. die Wechsel zwischen den Tabellenblättern sind "erkennbar". Ließe sich das optimieren? habe noch ähnliche Makros bei denen das auch so ist.
Vielen Dank schon mal an die Helfer

Code: Alles auswählen

antwort = msgbox("Abr.-Monat eingetragen?", 35)
[color=#BF8040]if antwort = 7 Then
     myDoc = thisComponent
mySheet = myDoc.Sheets().getByName("Patientendatei")[/color]
if antwort = 2 Then
		 exit sub
end if	

Code: Alles auswählen

sub Abrechnung
rem ----------------------------------------------------------------------
antwort = msgbox("Abr.-Monat eingetragen?", 33)
if antwort = 2 Then
		 exit sub
end if		
rem define variables

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 = "ToPoint"
args1(0).Value = "$F$37:$F$47"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Nr"
args2(0).Value = 4

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$A$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1
args4(1).Name = "Sel"
args4(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(5) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Flags"
args6(0).Value = "SVD"
args6(1).Name = "FormulaCommand"
args6(1).Value = 0
args6(2).Name = "SkipEmptyCells"
args6(2).Value = false
args6(3).Name = "Transpose"
args6(3).Value = true
args6(4).Name = "AsLink"
args6(4).Value = false
args6(5).Name = "MoveMode"
args6(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args6())
 
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Nr"
args7(0).Value = 3

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "ToPoint"
args8(0).Value = "$K$8"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args8())

end sub
Gruß Jörg

Win 10 Pro AOO 4.1.15
andrew12
Beiträge: 3
Registriert: Mi, 15.01.2014 09:12

Re: Makros, Eingabemaske

Beitrag von andrew12 »

the input mask works just fine... :D :D :D
Antworten