Seite 1 von 2
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: Sa, 21.09.2013 15:04
von clag
hallo pennylane2
also machbar ist da bestimmt etwas per Makro, so ganz schnell gemacht ist das nicht.
Aber wo kommt denn die große Datenmenge her?
Die scheint doch schon in irgendeiner Form zu existent zu sein, da bietet sich doch eher ein Import an.
In welchem Format liegen denn die Rohdaten vor?
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: Sa, 21.09.2013 16:24
von Stephan
Es gilt, einstellige ganzzahlige Werte <5 einzugeben und zwar in Fünferblöcken. Das soll so aussehen, dass die Zellen A2-B2-C2-D2-E2 mit jeweils einem Wert befüllt werden sollen, dann A3-B3-C3-D3-E3 usw. Zeile 1 ist Überschriftszeile der Spalten.
das geht in OO auch ohne Makro indem Du vorher den Eingabereich markierst und beim 'Aufziehen' der Markierung darauf achtest das die aktive Zelle (die mit dem Marklierungsrahmen) die linke obere Zelle des gewünschten Bereichs ist. Danach tippe jeweils die Eingabewerte und drücke zum Springen in die nächste Zell TAB-Taste, Calc erkennnt automatiosvch wann esnötig ist auch in die nächste Zeile zu springen.
Zwei Automatisierungswünsche habe ich für die Datenerfassung:
1. Eine korrekte, über Gültigkeit definierte einstellige Eingabe sollte automatisch den Sprung in die Nachbarspalte derselben Zeile bewirken: Ich gebe bspw. eine 3 in Zelle A1, CALC springt in B1 usw.
2. Eine Eingabe in der 5. Spalte, also E sollte dann einen Sprung in die erste Spalte der folgenden Zeile bewirken, also von E2 nach A3, später von E3 nach A4 usw.
Nur mal als Hinweis:
Muss das wirklich per Makro sein? Werum erstellst Du die gewünschten 5-stelligen Zahlen(*) nicht in Writer und kopierst sie dann nach calc, hierbei kannst Du sie mit der Einstellung "feste Breite" automatisch auf Zellen aufteilen. Also in Writer einbe 5-stellige Zahl pro Absatz und dann den kompletten Dokumentinhalt auf einmal nach Callc kopieren (Bearbeiten-Inhalte einfügen-unformatierte Text) und im Einfügen-Dialog die feste Breite auf ein Zeichen einstellen.
(*)ich bin mir bewusst das das strenggenommen nicht stimmt, denn Deine Angaben liessen ja auch Zahlen wie -4 als zulässig erscheinen, ich glaube jedoch du meinst trotzden nur die Zahlen 0, 1, 2, 3, 4.
Wenn es ein Makro sein muss, erweist es nicht so ganz trivial, denn ich probiere jetzt seit einer Stunde und kriege das nicht richtig ans Laufen, vielleicht schafft das ja jemand Anderes.
Ein prinzipielles Codebeispiel ist hier:
http://www.oooforum.org/forum/viewtopic ... highlight=
Gruß
Stephan
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: Sa, 21.09.2013 17:18
von Stephan
Damit müsste zwar nach jedem Fünferpäckchen ein TAB gedrückt werden
Nein, TAB ist völlig unnötig.
Du sollst in Writer jede 5er-Gruppe in einen Absatz schreiben, also z.b.:
12340
11201
32133
22143
44213
Eingabe also z.B. für erste Gruppe:
<1><2><3><4><0><ENTER>
wenn dann alles in Writer steht, mit STRG+A und STRG+C kopieren und mit Bearbeiten-Inhalte einfügen-unformatierter Text in Calc einfügen.
Gruß
Stephan
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: Sa, 21.09.2013 19:44
von Stephan
Zum einen fehlt mir beim Import nach CALC die Trennoption innerhalb der 5er-Reihe, dh. ich bekomme 42211 in eine Zelle kopiert, brauche aber jeden Wert in einer eigenen Zelle.
Wie wäre es denn wenn du liest was ich schreibe?
Ich schrieb bereits:
Warum erstellst Du die gewünschten 5-stelligen Zahlen nicht in Writer und kopierst sie dann nach calc, hierbei kannst Du sie mit der Einstellung "feste Breite" automatisch auf Zellen aufteilen.
Denn es ist natürlich problemlos möglich die einzelnen Zahlen/Ziffern der 5er-Gruppen automatisch auf jeweils 5 nebeneinander liegende Zellen verteilen zu lassen.
Ebenso ist es möglich die 5er-Gruppen erst jeweils zusammenhängend in eine Zelle (pro Zeile) einzufügen und nachfolgend mittels Daten-Text in Spalten... auf jeweils 5 Zellen aufzuteilen, wieder unter Nutzung der Einstellung einer festen Breite von einer Ziffer, im Dialog.
Wichtig ist zudem, dass ich bei direkter Eingabe in CALC die Möglichkeit habe, fehlerhafte Eingaben vermeiden zu können über die Gültigkeitsdefinition.
Ist es zwingend das das über die Gültigkeitdefinition erfolgt?
Der Code, den ich da gefunden habe, hilft nicht weiter ?
Auf jeden Fall hilft er mir persönlich nicht weiter wenn die Prüfung in Calc über Daten-Gültigkeit erfolgen muss,
vielleicht wissen ja Andere hier im Forum zu diesem Problem mehr als ich.
(Falls die Prüfung auf Richtigkeit nicht über Daten-Gültigkeit erfolgen muß, sondern im Makro erfolgen kann, läge die Sache wohl etwas anders, aber man sollte sich damit der Aufwand in Grenzen bleibt auf einen bestimmten, konkreten Zellbereich beschränken, die Größe ist eigentlich egal (meinethalben A2:E10000), nur sollte der Bereich vorher feststehen.)
Gruß
Stephan
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: Sa, 21.09.2013 20:32
von Karolus
Hallo
Gib in Calc ein
42356enter-taste
28945enter-taste
usw.
hinterher markiere die Spalte und gehe zu →Daten→Text in Spalten
mit Option [x]feste Breite
und setze die 4 Trenner unten in der Vorschau
Karolus
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: Sa, 21.09.2013 20:40
von F3K Total
Nun,
ich habe das mal per Dialog gelöst:
Diese drei kleinen Makros erledigen die Arbeit:
Code: Alles auswählen
REM ***** BASIC *****
global otxtrow
global oStartcell
global ncounter
Sub S_init_dlg
oStartcell = thiscomponent.currentselection
ncounter = 0
DialogLibraries.LoadLibrary("Standard")
odlgrow = CreateUnoDialog(DialogLibraries.Standard.dlgrow)
otxtrow = odlgrow.getControl("txtrow")
odlgrow.execute
odlgrow.Dispose()
End Sub
Sub S_on_text_changed
stext = otxtrow.Text
if len(stext) = 5 then
acrow = aRow(sText)
ocelladdress = ostartcell.celladdress
nrow = ocelladdress.row + ncounter
ncolumn = ocelladdress.column
nsheet = ocelladdress.sheet
osheet = thiscomponent.sheets(nsheet)
for i = 0 to 4
ocell = osheet.getcellbyposition(ncolumn + i,nrow)
ocell.value = acrow(i)
next i
ncounter = ncounter + 1
otxtrow.Text = ""
endif
End Sub
function aRow(srow)
dim nRow(4) as integer
for i = 1 to 5
nRow(i-1) = mid(srow,i,1)
next i
arow = nRow
end function
Anbei die Beispieldatei, in der der Dialog definiert ist.
- Startzelle anklicken
- Button klicken
- einstellige Zahlen ohne Pause hintereinander eingeben ...
Viel Spaß beim Tippen
Gruß R
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: Sa, 21.09.2013 21:39
von clag
hallo pennylane2,
habe aus hier etwas zusammengebaut
was deine Anforderungen großteils erfüllt
das drücken der Entertaste ist aber nicht störend finde ich,
wenn man die Zahlen mit links eintippt und mit rechts die Entertaste bedient
der Rest ist dann wie gewünscht
und zu beginn den "listener" starten

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: Sa, 21.09.2013 21:53
von F3K Total
So,
hier nun die Version mit Gültigkeitsprüfung, umschaltbar auf sechs Zahlen.
EDIT: Fehlerhafte Datei gelöscht
Gruß R
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: Sa, 21.09.2013 22:06
von F3K Total
Ups,
da habe ich wohl zu speichern vergessen, hier die 5-oder 6-Zahlen Version nochmal richtig.
EDIT Datei gelöscht -> finale Version steht weiter unten
Gruß R
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: Sa, 21.09.2013 23:27
von balu
Hallo Leute,
man-oh-man! Was is denn hier Los? Findet hier etwa "die heiße Schlacht am kalten Buffet" statt?
Okay, dann möchte ich meine Version auch mal vorstellen.
Zahlen gößer 4 werden nicht akzeptiert, und Buchstaben und Sonderzeichen werden auch nicht angenommen.
Umschalten zwischen 5 oder 6 Zahlen ist auch möglich.
Momentan werden die Zahlen ab A2 eingetragen. Falls das nicht gewünscht, dann bitte sagen.
Wenn eine Falscheingabe statt gefunden hat, so wird das unübersehbar angezeigt. Durch klick auf OK kann man dann den Fehler korrigieren.
Leider bin ich nicht der schnellste, denn sonst hätte ich schon früher mitgemischt

.
Der Code ist leider auch nicht der schönste und beste, aber es funktioniert alles, falls ich nicht etwas übersehen habe.
Gruß
balu
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: So, 22.09.2013 00:30
von F3K Total
Hallo Balu,
dankeschön!
Wir sind ja nahezu auf die gleiche Lösung gekommen.
Dein zweiseitiger Dialog für die Fehlermeldung ist Klasse!

Da fliegt keine Messagebox unmotiviert herum.
Da ich so einen mehrseitigen Dialog noch nie erstellt habe, habe ich mich gleich mal dran probiert.
Anbei das Ergebnis.
Gruß R
EDIT Datei nochmal getauscht, irgendwie habe ich heute Probleme mit dem Speichern, so hatte ich es gedacht:
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: So, 22.09.2013 01:25
von balu
Hallo R,
irgendwie habe ich heute Probleme mit dem Speichern
Na Du hast aber Probleme

Ich hatte einen Knoten im Hirn, weil ich nicht wusste wie ich die Überprüfung auf ungleich Zahlen und größer 4 bewerkstelligen sollte *grrrrrrr*. Und dadurch ist das Dialog-Layout in den Hintergrund getreten -{Ich werde
jetzt aber auch nix mehr dran ändern}-.
dankeschön!
Gern geschehn!
Wir sind ja nahezu auf die gleiche Lösung gekommen.
So war wohl nicht die Vorgabe, aber ich fand "unsere" Idee irgendwie am effizientesten. Und dennoch, so auf den ersten Blick ähnlich, aber doch sehr unterschiedlich. Seis der Dialog, oder der Code.
Ich finde aber doch das wir das bis jetzt sehr gut gemacht haben. *Daumen-hoch*
Da ich so einen mehrseitigen Dialog noch nie erstellt habe, habe ich mich gleich mal dran probiert.
Viel kann man am lebenden Objekt lernen. Oder anders gesagt; durch eine Vorgabe wird man ganz anders motiviert

.
Hast Du aber auch gut hinbekommen.
[OT]
So'n kleines Battle sollte man ruhig öfters machen

.
[/OT]
Gruß
balu
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: So, 22.09.2013 03:33
von balu
Hallo penny,
Und ihr zwei, F3K und balu, ihr zaubert mir da exakt das hin, was ich mir erträumt hatte
Ich sage mal für meinen Teil: Danke schön
Kann ich unfallfrei den Text der Buttons und der Falscheingabemeldungen ändern oder muss ich das auch von euch machen lassen ?
Für einen Anfänger in der Programmierung ist das für den Anfang etwas verwirrend. Und aus diesem Grunde habe ich mich mal mit
http://translate.google.de/ auseinander gesetzt, und versucht das ganze für dich zu erledigen. Wenn es irgendwo nicht so recht passt, dann sag bitte schön was wo geändert werden müsste.
Vielleicht meldet sich ja noch jemand der dir genau erklärt wie man im Dialog Änderungen vornimmt. Ich mache jetzt auf jeden Fall gleich Feierabend. Haia-Bettchen ruft mich.
balu hat geschrieben:
Und dadurch ist das Dialog-Layout in den Hintergrund getreten -{Ich werde jetzt aber auch nix mehr dran ändern}-.
Nun hab ich es doch noch ein wenig geändert.
Ich hoffe das die Datei bei dir technisch fehlerfrei funktioniert.
Gruß
balu
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: So, 22.09.2013 07:48
von F3K Total
Moin,
pennylane2 hat geschrieben:Kann ich unfallfrei den Text der Buttons und der Falscheingabemeldungen ändern oder muss ich das auch von euch machen lassen ?
Balu hat es schon, für meinen Teil:
Klar, kannst Du machen, wenn Du Probleme hast, melde Dich.
Gruß R
Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)
Verfasst: So, 22.09.2013 09:02
von F3K Total
Hi,
bin doch noch mal drangewesen, weil mir noch zwei, drei kleine Verbesserungen eingefallen sind:
- feststehende Kopfzeile
- große Schrift im Dialog, für den Vorlesenden zum mitgucken
- Cursor springt mit, man sieht die aktuelle Zeile
EDIT Datei gelöscht -> finale Version steht weiter unten
Gruß R