Clever-Excel-Forum

Normale Version: Lagerbestand Eingang/Ausgang Buchen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,



ich möchte eine Lagerliste erstellen, in welcher ich © Materialein- und (D) -ausgänge eintragen möchte, welche dann in einer weiteren Spalte (E) zusammengefasst erscheinen sollen.

Dabei sollten nach jeder Buchung die Spalten C und D wieder gelöscht werden und die Anzahl jeweils zum Bestand hinzuaddiert bzw davon weg subtrahiert werden.



Habt ihr hierzu eine Idee ?

Ich habe hierzu ein Videotutorial gefunden allerdings hochkomplex aus über 400 Einzelvideos. Bis ich das nachgemacht habe, bin ich Rente.





Vielen Dank vorab.
(24.03.2020, 14:59)RowBert schrieb: [ -> ]Dabei sollten nach jeder Buchung die Spalten C und D wieder gelöscht werden und die Anzahl jeweils zum Bestand hinzuaddiert bzw davon weg subtrahiert werden.
Geniale Idee.

"Warum ist der Bestand eigentlich -70,46?"
Hallo RowBert,

probier mal das:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
If Target.Column Mod 5 = 3 Then
    Cells(Target.Row, Target.Column + 2) = Cells(Target.Row, Target.Column + 2) + Cells(Target.Row, Target.Column)
ElseIf Target.Column Mod 5 = 4 Then
    Cells(Target.Row, Target.Column + 1) = Cells(Target.Row, Target.Column + 1) - Cells(Target.Row, Target.Column)
End If

Cells(Target.Row, Target.Column) = ""
Application.EnableEvents = True


End Sub
Gruß,
Lutz
Funkioniert einwandfrei, vielen lieben Dank.
Auch wenn ich aus dem Code keine logische Schlussfolgerung ziehen kann, wie das funktioniert.

Blush
Hallo RowBert,

ist keine Hexerei...
Code:
Application.EnableEvents = False
schaltet die Events aus (sonst läuft der Code evtl. in Dauerschleife...).
Code:
Target.Column Mod 5 = 3
berechnet den Rest bei der Division der Spaltennummer durch 5 (da sich dein Layout 5-spaltig ist).
In der 3., 8., 13. usw. Spalte (Zugang) ist der Rest 3, in der 4., 9., 14. usw. Spalte (Abgang) ist der Rest 4.
Code:
Cells(Target.Row, Target.Column)
ist die Zelle in Zeilen- und Spalten-Schreibweise, die gerade geändert wurde.
Code:
Cells(Target.Row, Target.Column + 2)
ist folglich die Zelle zwei Spalten weiter rechts.
Code:
Cells(Target.Row, Target.Column) = ""
löscht den Inhalt der gerade geänderten Zelle.

Gruß,
Lutz
Das Model ist allerdings undurchsichtig, da nach Eingabe nichts mehr nachverfolgt werden kann. Hier noch ein Beispiel von mir.