Hallo liebe Forenmitglieder,
Ich habe mich, um die Erstellung von Bestelllisten auf meinem Arbeitsplatz (Bundesfreiwilligendienst) zu erleichtern, erstmals mit Visual Basic und Makros beschäftigt, beziehungsweise sogar erstmals wirklich mit Excel.
Die Situation: Wir haben 291 verschiedene Artikel in unserem Sortiment, täglich werden meist über hundert Artikel verschickt. Die Auftragslisten werden unter anderem von mir sozusagen per Hand in eine Exceldatei eingegeben, wo die in Tabellen eingegebenen Zahlen jeden Tag einen aktuellen Bestand ergeben, quasi eine einfache Datenbank. In der Gleichen Datei gibt es ein Worksheet/eine Tabelle (mit dem Namen "Bestellungen"), in dem/der lediglich der Name des Artikels, der Hersteller, wie lange der Bestand des speziellen Artikels vermutlich laut Statistik noch ausreichen wird, einige andere Angaben und schließlich der aktuelle Bestand. Dies alles steht in einer Zeile, die Artikel sind somit untereinander aufgelistet.
Das Problem: Zwar würde ich beim Eintragen der Ausgangszahlen am selben Tag bemerken, wenn zB ein Bestand auf 0 gehen würde, jedoch wäre es in diesem Moment schon zu spät, um den Artikel neu zu bestellen - es könnte ja sein, dass er bestellt wird, während wir ihn nicht auf Lager haben. Ich könnte zwar jeden Tag die "Bestellungen" auf Artikel durchsuchen, die einen kleinen Bestand haben und/oder laut Statistik nicht mehr lange halten.
Mein Ansatz: Nach laienhafter Recherche und einigem probieren habe ich einen Code zusammengestellt, welcher einerseits ein neues Worksheet mit Namen "Auswertung" anlegen soll, danach die "Bestellungen"-Tabelle in der Bestandsspalte (D) nach Werten durchsuchen soll, die unter 100 liegen (dieser Wert ist eventuell noch nicht festgelegt, muss noch mit dem Chef abgesprochen werden, wenn das Makro funktioniert^^). Sobald ein solcher Wert gefunden wurde, soll die gesamte Zeile (sprich Artikelname etc.) nach "Auswertung" kopiert werden. Danach soll mit der nächsten Zelle fortgefahren werden usw. Am Ende soll im Sheet "Auswertung" eine Liste von Artikeln stehen, die vermutlich bald bestellt werden sollten (je nach Statistik). Wenn man dieses Makro zum funktionieren bringen würde, könnte ich beispielsweise alle zwei Tage oder einmal die Woche die Bestandsliste so auswerten und eine Bestellung vornehmen.
So sieht nach einiger Puzzelei der Code aus:
Sub Auswertungsmakro ()
Application.Screenupdating = False
Bestellungen = Activesheet.Name
Sheets.Add.Name = "Auswertung"
Sheets(Bestellungen).Activate
For Each c in Workseets("Bestellungen").Range("D2:D291")
If c.Value <= 100 Then
Activecell.EntireRow.Copy Destination:= Sheets("Auswertung").Range("A65536").End(xlUp).Offset(1,0)
End If
Next c
End Sub
Ich hoffe, ich habe mich halbwegs verständlich ausgedrücken können.. Vielen Dank für Eure Aufmerksamkeit schon mal vorweg! :)
|