Adressen eintragen, drucken, sortieren, listen

Hallo zusammen.

Heute wende ich mich an euch mit einem (vielleicht) kleinen Problem für Profis.

Es geht um eine gemeinnützige ehrenamliche Aktion. Wir verkaufen seit Jahren Weihnachtsbäume und liefern diese auch zu den Käufern nach Hause. (Eine Aktion der Kirche für einen guten Zweck).
Mittlerweile ist es jedoch so, dass wir so bekannt sind, dass das Aufkommen auf rund 1000 Bäume kommt.
Daher wird es mit der Logistik zur Lieferung langsam schwierig.

Ich möchte nach dem Desaster im letzten Jahr nun eine Excel Liste haben.
Ich habe da schon etwas vorbereitet und hochgeladen (Excel 2010):
http://www.file-upload.net/download-9745115/Weihnach…

Aus online Hilfen habe ich bereits den Button „Neue Lieferung“ mit VBA einfügen können.
Jedoch fehlen mir die Kenntnisse dies zum Ende zu bringen.

Vielleicht gibt es jemanden hier der für den Guten Zweck helfen kann und möchte und mir das Problem zu Ende beheben kann.

Folgendes soll hier noch geschehen:

In der Eingabemaske „Neue Lieferung“ sollen 2 Drop Down Menüs hinzugefügt werden.

Das eine Menü ist die Uhrzeit der Lieferung im 2 Stunden takt. D.h. im Menü soll nun zur Wahl stehen „11-13 Uhr“, „13-15 Uhr“ und „15-17 Uhr“.
Das Ergebnis soll in der Gesamtübersicht „Tabelle1“ in der Spalte Uhrzeit angezeigt werden.

Das Zweite Menü soll nun die Auswahl des Stadtteils haben.
Als Auswahl sollen hier die Stadtteile stehen die in den einzelnen Tabellenblättern genannt sind (Batenbrock, Boy, Eigen etc.)
Das Ergebnis soll natürlich in Tabelle1 unter Stadtteil eingetragen sein.

Nun habe ich eine Gesamtliste aller zu liefernden Bäume in Tabelle 1.
Diese muss nun für die einzelnen Fahrer in die Tabellenblätter sortiert werden.
Soll heissen:
Wenn in der Spalte „Stadtteil“ „Batenbrock“ angegeben ist, dann kopiere die Zeile und Füge Sie an entsprechender Stelle in die Liste im Tabellenblatt „Batenbrock“ ein.

Nach Uhrzeit sortieren muss das ganze nicht, das geht ja über einen klick.

Das war mein Anliegen Nr. 1.
Nr. 2 wäre der Etikettendruck.

Am liebsten wäre es mir wenn nach absenden des Formulars gleich ein Ettiket gedruckt werden kann auf einem Etikettendrucker.
D.H. Wenn alle Angaben gemacht sind und ich auf Speichern drücke, dann druckt der Etikettendrucker ein Etikett mit allen Angaben und fügt gleichzeitig alles in die Listen ein.

So muss das Etikett nur noch auf den Weihnachtsbaum geklebt werden damit auch der richtige Baum zum Richtigen Besitzer geht.

Ich weiss, dass ich hier mit einem schwierigen Problem komme und es sicher nicht ganz einfach ist.
Ich hoffe jedoch, dass Ihr mir helfen könnt und jemand sich erbarmt das ganze realisieren zu können.
Es ist schließlich für einen guten Zweck. (Infos gerne auf Rückfrage)

Viele Grüße und vielen vielen Dank im vorraus.
Marcel

In der Eingabemaske „Neue Lieferung“ sollen 2 Drop Down Menüs
hinzugefügt werden.
Das Zweite Menü soll nun die Auswahl des Stadtteils haben.
Das Ergebnis soll natürlich in Tabelle1 unter Stadtteil
eingetragen sein.

Hallo Marcel

Damit Du siehst, dass sich was tut mit Deinen Weihnachtsbäumen, hier ein Zwischenergebnis zur Lösung Deiner Probleme.
http://www.file-upload.net/download-9751478/Weihnach…

Ich habe in die Eingabemaske die zwei DropDown Menüs Uhrzeit und Stadtteil eingefügt. Die Daten werden in Tabelle1 eingetragen. Dem Uebrigen widme ich mich, sobald ich wieder etwas Zeit habe.

Zu Deiner Tabelle1: Ich habe dort folgendes geändert:
Die Spalte Telefon habe ich als Text formatiert, damit die Nummern vernünftig ausgegeben werden.
Deinen Button „Neue Lieferung“ habe ich kopiert in die Zelle B1, dann ist er nicht so weit weg. Neben „Strasse“ - rötlich markiert. Du kannst ihn selbstverständlich wieder entfernen. Der Original-Button ist an der alten Stelle ganz rechts im Tabellenblatt.
Ich habe die oberste Zeile „fixiert“: Wenn Du in der Tabelle runter gehst oder runter scrollst, bleibt die 1. Zeile immer sichtbar. Menü Ansicht / Register Fenster / Fenster einfrieren / Oberste Zeile einfrieren

Weiter habe ich Deine Userform etwas verkleinert. Auf meinem Bildschirm war sie mir zu gross.

Eine Frage noch zu den Modulen: Du hast drei Module mit dem gleichen Inhalt. Ich glaube Modul 2 und 3 sind unnötig und verwirren nur.

Eine weitere Frage zu den Etiketten: Ich habe keinen Etikettendrucker und deshalb auch kein entsprechendes Programm. Ich arbeite nur mit den Word-Etiketten (Menü Sendungen). Eine Frage dazu: Kannst Du bei Deinem Etiketten-Programm Adressen aus einer Excel-Tabelle reinkopieren? In den Word-Etiketten geht das. Das wäre eine einfache, gut machbare Lösung.

Bis demnächst - Viele Grüsse Niclaus

Hallo Marcel,

Niclaus hat dir ja schon eine schöne erste Version hochgeladen.
Ich hab die mal benutzt und weiterentwickelt zur Stufe 2. Kannst du hier runterladen:
http://www.file-upload.net/download-9753083/Weihnach…
Auf der Tabelle1 gibt es oben rechts jetzt einen weiteren (grünen) Button „Liste verteilen“.
Wenn du auf den klickst, macht er hoffentlich das, was du willst (und was sein Name sagt): Die Einträge aus Tabelle1 werden auf die Stadtteillisten verteilt.

Und dann schließe ich mich noch der Frage von Niclaus bez. des Druckens an.

Gruß, Andreas

Hallo Andreas

Dummerweise habe ich vergessen, mich in der Tabelle von Marcel einzutragen! Jetzt muss ich den Christbaum dann halt selber besorgen :wink:)

Ich habe im Zusammenhang mit der Textbox1 (Name/ID) in der UserForm1 von Marcel eine Frage. Ich muss dazu allerdings weit ausholen.

Unabhängig von Marcels Tabelle: Ich habe in einem Tabellenblatt eine TextBox1 – erstellt mit Menü Steuerelemente / Steuerelemente / Einfügen
Im VBA-Bereich dieser Tabelle gibt es folgende Makro-Codes:

Public SuchText
Const DefText = "Hier etwas eingeben" 
' Default-Text, der in der Textbox ausgegeben wird

Private Sub TextBox1\_GotFocus()
' Markiert den Default-Text der Textbox
With TextBox1
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub

Private Sub TextBox1\_KeyDown(ByVal KeyCode \_
 As MSForms.ReturnInteger, ByVal Shift As Integer)
' Abschließen der Texteingabe in der Textbox mit Enter führt Makro aus
Zelladresse = ActiveCell.Address
SuchText = TextBox1.Value
If KeyCode = 13 Then
 TextBox1.Text = DefText
 Call Makro1
 Range(Zelladresse).Select
End If
End Sub

Sub Makro1()
MsgBox SuchText
End Sub

Meine Frage zielt auf Private Sub TextBox1_GotFocus(): Durch diesen Code wird in der Textbox1 der Default-Text „Hier etwas eingeben“ markiert. Wenn ich in die Textbox reinklicke, ist er markiert; ich kann ihn überschreiben, ohne ihn vorher löschen zu müssen. Ganz ähnlich wie beim Default-Text in einer InputBox.

Ich wollte diesen Makro-Code Sub TextBox1_GotFocus() auch in die UserForm1 von Marcel für die TextBox1 einbauen. Wenn man mit der jetzigen UserForm einen neuen Eintrag in die Tabelle macht, erscheint ja in der Textbox1 der Text „Neuer Eintrag Zeile x“. Diesen Text muss man doppelklicken oder löschen, damit man eine neue Eingabe machen kann. Ich hätte gern, wenn dieser Text markiert wäre, ohne dass man ihn doppelklicken muss. Ich könnte ihn dann einfach überschreiben. Das haut aber nicht hin.

Auf www.herber.de/forum/archiv/212to216/212978_Wo_ist_Go…
habe ich dazu gelesen: „Das Ereignis gotfocus funktioniert nur, wenn du im Tabellenblatt ein Textfeld machst, nicht in Userform (bei Userfom gibt’s die gotfocus nicht).“
mbek 03.02.2003 - 15:34:49

Stimmt diese (11jährige) Aussage?

Ein anderer Forumsteilnehmer schreibt dazu kurz und bündig: „nimm das Enter-Ereignis“
Nepumuk 03.02.2003 - 17:41:14
Komme ich damit zu meinem Ergebnis? Ich habe mit Enter zwar die Textbox einfärben können, aber das ersetzt mir nicht die Markierung!

Private Sub TextBox1\_Enter()
 TextBox1.BackColor = RGB(255, 255, 0)
End Sub

Falls Du, wenn die Christbäume ausgeliefert sind, mal Zeit hast, darüber nachzudenken, bin ich Dir sehr dankbar. Bis dahin viele Grüsse
Niclaus

Wow, das ist ja der Wahnisinn!

Vielen Dank auf jeden Fall bis hierher.
So in der Art habe ich es mir gedacht.

Nun stelle ich allerdings fest, dass es vielleicht nicht so schlau war in der Eingabemaske den Button „Neuer Eintrag“ und die Liste der Einträge einzubauen.

Beim testen habe ich direkt mal einen vorhandenen Eintrag überschrieben. Das soll natürlich nicht passieren.

Genial wäre natürlich nun wenn man folgendes schafft:

Wenn die Eingabemaske geöffnet wird, dann gibt es Automatisch einen neuen Eintrag ohne, dass ich auf „Neuer Eintrag“ klicken muss. Die Liste mit den vorhandenen Einträgen fliegt hier heraus.

Der Button zum sortieren der Listen wird dann als „Speicherbutton“ hinterlegt.
Kann man diesen Befehl nicht auch auf den Speicherbutton hinterlegen, sodas automatisch die Listen sortiert werden?

Zu der Frage mit den Etiketten:
Das weiss ich noch nicht genau. Ich wusste ja noch nichteinmal, dass es so hilfsbereite Menschen gibt, die mir so helfen.
Daher habe ich mich auch noch nicht um ein Etikettenprogremm gekümmert, geschweige denn um einen Etikettendrucker.

Diesen würde ich dann noch mit Software kaufen um direkt aus Excel die Etiketten drucken zu können.
Da wird es doch sicherlich etwas geben.

Ich danke nochmals und freue mich schon auf das Ergebnis!

Liebe Grüße
Marcel

Wow, das ist ja der Wahnisinn!

Und wer hat uns da hinein getrieben??

Beim testen habe ich direkt mal einen vorhandenen Eintrag
überschrieben. Das soll natürlich nicht passieren.
Genial wäre natürlich nun wenn man folgendes schafft:

Wenn die Eingabemaske geöffnet wird, dann gibt es Automatisch
einen neuen Eintrag ohne, dass ich auf „Neuer Eintrag“ klicken
muss. Die Liste mit den vorhandenen Einträgen fliegt hier
heraus.

Hier eine neue Version
http://www.file-upload.net/download-9758022/Weihnach…

Da bin ich nur teilweise einverstanden: Ich stelle mir vor, dass auch mal ein Eintrag gelöscht werden muss! Deshalb lasse ich die alten Einträge weiterhin aufscheinen. Sie können aber nicht mehr überschrieben werden.

Der Button zum sortieren der Listen
Kann man diesen Befehl nicht auch auf den Speicherbutton
hinterlegen, sodas automatisch die Listen sortiert werden?

Ich habe ihn auf den BeendenButton hinterlegt. Man kann ihn aber auch unabhängig in Tabelle1 anklicken.

Neu habe ich Kontrollen eingefügt: Wenn z. B. kein Stadtteil erfasst wurde, wird eine Meldung ausgegeben.

Weiter habe ich eine Kontroll-Tabelle eingefügt. Ich bin Buchhalter, deshalb interessieren mich die „Umsatzzahlen“. Ich habe Buttons in Tabelle1 eingefügt, um die Kontroll-Tabelle zu wählen und umgekehrt. - Diese Kontrolltabelle muss zwingend ganz am Schluss der Tabellen sein, sonst gibt’s ein Chaos.

Zu der Frage mit den Etiketten:
Daher habe ich mich auch noch nicht um ein Etikettenprogremm
gekümmert, geschweige denn um einen Etikettendrucker.
Diesen würde ich dann noch mit Software kaufen um direkt aus
Excel die Etiketten drucken zu können.

Ich weiss nicht, ob das geschickt ist. Es wird ja nicht so leicht sein, Etiketten zu finden, die man auf Christbäume kleben kann! Allenfalls ein Drucker, wie er an den Flughäfen verwendet wird für die die Banderolen, die an die Koffer befestigt werden. Da wird es irgendwann sicher sehr günstige, alte Drucker-Modelle geben, wenn in Berlin der neue Flughafen … :wink:)

Probehalber würde ich es mal so versuchen: Die Adress-Daten auf ein DIN A4 Blatt drucken. Dieses Blatt falten z. B auf die Grösse 5 x 30 cm, um einen Ast oder um den Stamm falten und schliesslich mit einem Bostitch-Hefter die Blatt-Enden zusammenklicken. Aber, ich will Dir da nicht drein funken!

Grüsse Niclaus

Beim testen habe ich direkt mal einen vorhandenen Eintrag
überschrieben. Das soll natürlich nicht passieren.
Genial wäre natürlich nun wenn man folgendes schafft:

Wenn die Eingabemaske geöffnet wird, dann gibt es Automatisch
einen neuen Eintrag ohne, dass ich auf „Neuer Eintrag“ klicken
muss. Die Liste mit den vorhandenen Einträgen fliegt hier
heraus.

Da bin ich nur teilweise einverstanden: Ich stelle mir vor,
dass auch mal ein Eintrag gelöscht werden muss! Deshalb lasse
ich die alten Einträge weiterhin aufscheinen. Sie können aber
nicht mehr überschrieben werden.

Dieser letzte Satz stimmt leider nicht. Wenn ich einen neuen Namen(ID) erfasse und dieser neue Name stimmt überein mit einem bereits vorhandenen, wird dieser vorhandene aktiviert und allenfalls überschrieben. Nebenbemerkung: Der ursprüngliche Verfasser hat mit ID sicher etwas anderes gemeint als einen Namen!

Deshalb muss ich die Frage von Marcel weitergeben:
Wenn die Eingabemaske geöffnet wird, dann gibt es automatisch einen neuen Eintrag ohne, dass ich auf „Neuer Eintrag“ klicken muss.
Wie kriegt man das hin?

Danke Niclaus

Hi

das Problem des Überschreibens habe ich immernoch wenn ich nicht zuvor aus „Neuer Eintrag“ klicke.
Der Name der in der Liste angeklickt ist wird damit automatisch überschrieben.

Schönes wäre es wirklich wenn es so klappen würde, dass direkt ein neuer Eintrag vorhanden ist.
Ansonsten sieht es doch schon super aus.

Das Problem die Etiketten zu befesitgen ist keines.
Bisher haben wir es so gemacht, dass alles händisch in Listen eingetragen wurde und aus der Liste heraus wieder ein Anhänger handschriftlich geschrieben wurde der an den Weihnachtsbaum kommt.

Wenn ich nun einen Aufkleber daraus drucken kann, dann könnte ich diesen direkt auf den Baumanhänger kleben.

Gruß
Marcel

das Problem des Überschreibens habe ich immer noch wenn ich
nicht zuvor aus „Neuer Eintrag“ klicke.
Der Name der in der Liste angeklickt ist wird damit
automatisch überschrieben.

Schönes wäre es wirklich wenn es so klappen würde, dass direkt
ein neuer Eintrag vorhanden ist.
Ansonsten sieht es doch schon super aus.

Marcel hat recht. Aber ich steh auf dem Schlauch. Wie kriegt man das hin, dass mit dem Starten der Userform1 auch der Button „Neuer Eintrag“ „angeklickt“ wird? Ich stelle mir es so vor - aber so haut es nicht:

Sub Schaltfläche1_Klicken()
UserForm1.Show
CommandButton1.Activate
End Sub

Vielen Dank! Niclaus

Ist nicht so schwer:
Hallo Nicalus, Hallo Marcel,

das ist kein Hexenwerk:
Wir nehmen einfach alles, was in der Klick-Routine des „Neuer-Eintrag“-Buttons steht und machen eine eigene Sub neuerEintrag (in Modul 1) daraus.
Diese Sub können wir dann sowohl in CommandButton1_Click() als auch am Ende von UserForm_Initialize() aufrufen.
Hier ist die neue Version:
http://www.file-upload.net/download-9759148/Weihnach…

Aber: Sowohl die 4er- als auch schon die 3er-Version haben noch einen Bug:
Wenn man den neuen Eintrag nicht fertig ausfüllt und abspeichert, sondern einfach die Userform zumacht, rummst es. Das liegt daran, dass es dann zwar in Spalte A einen Eintrag gibt, aber keinen Stadtteil dazu. Das muss ich noch abfangen. Ich komm dann mit Stufe 5.

Bis dahin Gruß,
Andreas

Aber: Sowohl die 4er- als auch schon die 3er-Version haben
noch einen Bug:
Wenn man den neuen Eintrag nicht fertig ausfüllt und
abspeichert, sondern einfach die Userform zumacht, rummst es.
Das liegt daran, dass es dann zwar in Spalte A einen Eintrag
gibt, aber keinen Stadtteil dazu. Das muss ich noch abfangen.
Ich komm dann mit Stufe 5.

Hallo Andreas
Zu diesem Bug. Ich habe den fehlenden Eintrag bereits in der 3er-Version abgefangen, beim Speichern (und ähnlich beim Beenden):

 If Trim(CStr(ComboBox2.Text)) = "" Then
 'Meldung ausgeben
 MsgBox "Sie müssen einen Stadtteil eingeben!", vbCritical + vbOKOnly, "FEHLER!"
 'Abbrechen des Speicherroutine
 Exit Sub
 End If

Ich bin noch nicht dazu gekommen Stufe 4 anzuschauen.

Grüsse Niclaus

Stufe 5
So, ihr zwei,

hier ist die Version 5:
http://www.file-upload.net/download-9759589/Weihnach…

Ich habe mir erlaubt, das Auswählen vorhandener Einträge wieder zu aktivieren. Es kann ja sein, dass ein Eintrag mal geändert werden soll. Allerdings wird jetzt vor dem Speichern überprüft, ob der gewählte Eintrag der letzte in der Liste ist. Ist er das nicht, kommt eine Abfrage, ob man überschreiben will.

Zu der Frage von Niclaus, wie man einen neuen Eintrag in der Textbox1 vollständig markiert: Mach dich mal schlau über UserForm.TextBox.SelStart und UserForm.TextBox.SelLength.

Das Problem mit dem Fehler, wenn man die Userform schließt mit Einträgen ohne Stadtteil, scheint auch gelöst. Zumindest habe ich bei etlichen Testläufen nichts mehr gemerkt.

Jetzt bliebe also noch die Sache mit dem Etikettendruck zu ergänzen. Da brauchen wir aber mal genauere Angaben von Marcel.

Gruß, Andreas

1 Like

Wahnsinn!

Es ist einfach nur Perfekt möchte ich behaupten!

Vielen vielen Dank dafür!

Das Etiketten Problem kann ich jetzt leider noch nicht genauer erläutern, da ich ja noch nicht weiß wie die Etiketten gedruckt werden.

Vom Ablauf her soll es ja so sein, dass wenn einer die Adresse am Rechner eingegeben hat und auf Beenden oder Speicher klickt aus dem Etikettendrucker das Adressetikett ausgeworfen wird.

Wie und mit welchem Gerät man das Realisieren kann muss ich noch herausfinden. Dann werde ich ein entsprechendes Gerät kaufen.

Ich danke euch nochmals von ganzem Herzen!
Das ist ganz großes Kino!

Etikettendruck
Hi Marcel,

danke für die Blumen.
Das mit den Etiketten: Wenn ihr da bisher einfaches Papier genommen habt, könnte man das ja auch weiterhin so machen. Hast du denn schon einen stink-normalen Drucker? Laser wäre ideal, weil der Wasserfeste Farbe druckt. Könnte ja zur Weihnachtszeit auch mal feucht seit draußen.
Man könnte ja aus einer Zeile in der Excel Tabelle problemlos per Makro die Daten rausholen und groß auf ein A4 Blatt drucken. Dazu braucht es keinen speziellen Drucker o.ä.

Gruß, Andreas

Hi,

ich denke ein A4 Blatt ist da unsinn.
Das weicht auf. Gerade wenn die Bäume alle auf einem Haufen liegen.
Erst recht wenn es schneien sollte (wer weiss das schon).

Aber so ähnlich stelle ich mir das vor.
Wenn man alles eingegeben hat, dann alle Daten aus einer Zeile Drucken.
Wenn man die Druckeinstellungen dann anpasst, dann sollte es ja auch auf einen Etikettendrucker gehen.

Ich muss mal schauen was da in Frage kommt.

Gruß
Marcel

Hallo Andreas

Super, diese Version 5! Vielen Dank!

Und herzlichen Dank für die zusätzlichen Antworten auf meine speziellen Fragen.

Viele Grüsse
Niclaus

PS Ich lade an Marcel eine Stufe5a hoch: Ich habe da einzig das Design der Userform und die Aktivierreihenfolge der verschiedenen Boxen etwas geändert.

Ich danke euch nochmals von ganzem Herzen!
Das ist ganz großes Kino!

Hallo Marcel

Ich hoffe nur, es gibt dieses Jahr nicht wegen dieser Exceldatei ein neues Desaster :wink:)

Ich habe eine Version 5a hochgeladen:
http://www.file-upload.net/download-9762166/Weihnach…

Ich habe da einzig das Design der Eingabemaske etwas geändert, z. B. den „Stadtteil“ und die „Uhrzeit“ runtergezogen. Und vor allem habe ich die Ueberschrift der Eingabemaske geändert. Bisher hiess sie „Meine erste Eingabemaske“. Das ist sie jetzt ja wirklich nicht mehr!

Viele Grüsse und viel Erfolg bei der Aktion
Niclaus