Forumbeitrag
Excel-Version des Fragestellers:
2019
Erfahrungslevel des Fragestellers:
Excel gut - VBA bescheiden
Ja, das geht sehr gut. Du brauchst zusätzlich ein Buchungsprotokoll auf einem zweiten Tabellenblatt.
Beispiel:
Blatt 1: Artikel
Spalten:
A B C
Artikelnummer Name Bestand
Blatt 2: Entnahmen
Spalten:
A B C D E
Datum/Uhrzeit Kunde Artikelnummer Artikelname Menge
Dann wird bei jeder Ausbuchung automatisch eine Zeile geschrieben.
Sub EntnahmeProtokollieren(ByVal ArtikelNr As String, ByVal ArtikelName As String)
Dim wsLog As Worksheet
Dim naechsteZeile As Long
Dim kunde As String
Set wsLog = ThisWorkbook.Worksheets("Entnahmen")
kunde = ThisWorkbook.Worksheets("Artikel").Range("F2").Value
' F2 wäre z.B. das Feld, wo der Kunde ausgewählt/eingetragen wird
naechsteZeile = wsLog.Cells(wsLog.Rows.Count, "A").End(xlUp).Row + 1
wsLog.Cells(naechsteZeile, "A").Value = Now
wsLog.Cells(naechsteZeile, "B").Value = kunde
wsLog.Cells(naechsteZeile, "C").Value = ArtikelNr
wsLog.Cells(naechsteZeile, "D").Value = ArtikelName
wsLog.Cells(naechsteZeile, "E").Value = 1
End Sub
Und in deinem Ausbuchungs-Makro rufst du es so auf:
Call EntnahmeProtokollieren(artikelnummer, artikelname)
Wenn du im Makro die passende Zeile schon gefunden hast, zum Beispiel fundZeile, dann so:
Call EntnahmeProtokollieren( _
wsArtikel.Cells(fundZeile, "A").Value, _
wsArtikel.Cells(fundZeile, "B").Value _
)
LG Robert