Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Berechnungen in VBA

Betrifft: Berechnungen in VBA von: Sabrina
Geschrieben am: 28.06.2013 15:01:04

Hallo liebes Forum,

ich bin ja immer dabei, meine Lagerverwaltung zu optimieren und habe schon tolle Hilfe von euch erhalten.

Nun bin ich auf folgendes Problem gestoßen:

Habe ich denselben Artikel auf verschiedenen Lagerorten, werden beim Ein-/Ausgang ALLE Bestände dieses aktualisiert, nicht NUR auf dem entsprechenden Lager.

Meine Recherche ergab, dass es sinnvoll ist, mit einer zusätzlichen ID-Spalte zu arbeiten. Die habe ich auch eingefügt, aber weiß nicht, wie die Funktion in meinem VBA geändert werden muss.

Eine abgespeckte Version meiner Mappe füge ich hier an.

Dann ist mir noch aufgefallen, wenn ich einen anderen Lagerort auswähle - über die Listbox1 - klappt das nur einmal. Danach wird die Listbox nicht mehr gefüllt. Ich muss erst die Mappe schließen und wieder öffnen, damit das klappt.

https://www.herber.de/bbs/user/86111.xlsm

Wäre super, wenn sich jemand die Zeit nehmen würde, um mal zu schauen. Vielen Dank im voraus.

Sabrina

  

Betrifft: AW: Berechnungen in VBA von: fcs
Geschrieben am: 30.06.2013 05:12:47

Hallo Sabrina,

Habe ich denselben Artikel auf verschiedenen Lagerorten, werden beim Ein-/Ausgang ALLE Bestände dieses aktualisiert, nicht NUR auf dem entsprechenden Lager.

Dann muss in dem Makro der "Buchen"-Schalfläche geprüft werden, ob Artikel-Nummer UND Lagerort mit den Inhalten der Combobox bzw. Textbox übereinstimmen.

Meine Recherche ergab, dass es sinnvoll ist, mit einer zusätzlichen ID-Spalte zu arbeiten. ...
Eine eindeutige ID jeder Datenzeile ist fast immer hilfreich für Suchvorgänge. In deinem Fall geht es aber auch ohne.
Dazu wird die Anzahl der Spalten für die Listbox, in der die Lagerorte zu dem in der Combobox gewählten Artikel angezeigt werden, auf 2 erhöht. Beim Füllen der Listbox wird dann in der 1. Spalte der Lagerort und der 2. Spalte die Zeile in der Tabelle gespeichert. Auf diese Information kann man nach Klick auf einen Lagerort in der Liste zurückgreifen (Change-Ereignis auswerten). Da die Information der Spalte nur im Hintergrund benötigt wird, wird in den Eigenschaften die Breite der 2. Spalte auf 0 gesetzt - die Nummer der Tabellenzeile in der Listbox also nicht angezeigt.

Dann ist mir noch aufgefallen, wenn ich einen anderen Lagerort auswähle - über die Listbox1 - klappt das nur einmal....
Dies passiert, wenn beim Starten der Userform das Blatt "Artikelliste" nicht das aktive Blatt ist. Hier muss in der Combobox-Chane-Prozedur bei Range und Cells die Referenz auf das Tabellenblatt ergänzt werden, damit unabhängig vom aktiven Blatt die Daten aus dem richtigen Blatt ausgewertet werden.

In deiner Anwendung ist es einfacher/bedienungsfreundlicher, das Change-Ereignis der Listbox auszuwerten und nicht das Doppelklick ereignis.

Ich hab den Code des Userforms und die Eigenschaften der Listbox1 mal entsprechend angepasst.
Zusätzlich ist auch der Farbumschlag der Textbox für den Bestand bei Mindestmengen-Unterschreitung drin.

Da die For-Next-Schleifen für die Suche nach der Zeile mit den ausgewählten Werten jetz entfallen ist dürfte das Userform jetzt auch wesentlich schneller arbeiten. Macht sich aber erst bei mehr als 1000 Datenzeilen deutlich bemerkbar.

Gruß
Franz
https://www.herber.de/bbs/user/86135.xlsm


  

Betrifft: Dankeschön ... von: Sabrina
Geschrieben am: 30.06.2013 07:48:30

... lieber Franz.

Du hast mir den Sonntag gerettet. Ich hatte schon die Befürchtung, den ganzen Mist hinschmeißen zu müssen, denn der Kollege, der das seinerzeit programmiert hat, ist nicht mehr in der Firma.

Deine Aussführung hilft mir zudem sehr, zu verstehen, warum wieso weshalb.

Danke dir recht herzlich.

Liebe Grüße und einen schönen Sonntag

Sabrina


 

Beiträge aus den Excel-Beispielen zum Thema "Berechnungen in VBA"