AW: Lagerliste
05.07.2005 11:26:01
Rainer
Hallo, Herr Weingartner,
Also, so richtig weiß ich nicht, ob ich auf dem richtigen Dampfer bin, aber ich versuchs mal.
Ich gehe von folgenden Prämissen aus:
- Was in SpalteLager1Zu eingetragen wird, wird automatisch in Lager1 addiert, in Lager2 subtrahiert;
- Was in SpalteLager2Zu eingetragen wird, wird automatisch in Lager2 addiert, in Lager1 subtrahiert;
- Eine Bestandsveränderung ist nur in Spalte Lager1Zu_Ab möglich.
Unter diesen Voraussetzungen kann ich einfache Zellformeln bilden.
Für Spalte B (Lager1) = D-E+F
Für Spalte C (Lager2) = E-D
Das ist soweit banal. Problem: Es wird kein echter Lagerbestand gespeichert (geht wegen der entstehenden Zirkelbezüge nicht), und wenn nun von einem Artikel eine bestimmte Anzahl ausgebucht werden soll, z.B. 20 von 100 in den Schrott, kann man in Spalte F nicht 20 eintragen, sondern muss den Restbestand nehmen. Lösung: Entweder eine weitere Spalte einführen und in F Zugänge buchen, in G Abgänge; dann müssen die Zellformeln entsprechend erweitert werden; oder ein Makro schreiben, im dem der Bestand in eine Variable geschrieben, verändert und das Ergebnis in die Zelle zurückgeschrieben wird. Ein guter Ausgangspunkt könnte folgender Code sein.
Sub auto_open()
'Bei Doppelklick in der Arbeitsmappe Prozedur aufrufen.
Worksheets(1).OnDoubleClick = "lagerRechnen"
End Sub
'
Sub auto_close()
Worksheets(1).OnDoubleClick = ""'Zurücksetzen
End Sub
'
Sub lagerRechnen()
Dim iZeile As Integer
Dim liBestand As Long
iZeile = Application.Caller.Row'Zeilenindex der geklickten Zeile übergeben
liBestand = Cells(iZeile, 2).Value + Cells(iZeile, 6).Value
Cells(iZeile, 2).Value = liBestand
End Sub
Da muss man noch ordentlich dran arbeiten, z. B. ungewolltes Doppelklicken abfangen etc. Viel Spaß.
Rainer Weiß