Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
284to288
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
284to288
284to288
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wohl nur für Profis

Wohl nur für Profis
30.07.2003 07:55:17
Walter
Hallo zusammen!
Ich habe eine Tabelle mit Lagerbeständen. Sobald eine Änderung der Bestände in Spalte F erfolgt, soll in eine ähnliche Tabelle einer anderen Arbeitsmappe in die nächste freie Zeile diese Veränderung dokumentiert werden. Dazu gehört u.a. das Datum der Änderung, die ein- bzw. ausgegangene Menge (Differenz ursprünglicher Bestand und neuer Bestand der alten Arbeitsmape). Hat jemand eine Ahnung wie das mit Hilfe eines Makros funktioniert oder direkt bei einer Feldänderung (Bestand)?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wohl nur für Profis
30.07.2003 08:45:20
Daniel P
Hallo Walter,
zunächst brauchst Du die Ergeignisprozedur Worksheet_Change (sie wird ausgelöst, wenn der Inhalt einer Zelle des Blattes geändert wird. darin fragst Du ab, ob die Änderung in Spalte F erfolgt ist. Wenn ja, machst du eien EIntrag auf deinem Protokollblatt. Zur ersten freien Zelle kommst Du mit Range("A1").End(xlDown).Offset(1).
Den alten Wert speicherst Du mit der Ergeignisprozedur Worksheet_SelectionChange in einer globalen Variablen, und überträgst ihn innerhalb der Change-Prozedur (bevor der Wert tatsächlich geändert wird, in das Protokoll.
Im Prinzip so:
Private varAlterWert

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Debug.Print CStr(Now); "  Änderung in Zeile "; Target.Row
Debug.Print "Alt: "; varAlterWert
Debug.Print "Neu: "; Target
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
varAlterWert = Target
End Sub

Daniel

Anzeige
AW: Bestandsänderung übernehmen mit Datum
30.07.2003 09:00:45
Stephan
Hi Walter!
Bitte wähl in Zukunft ein etwas aussagekräftigeren Betreff, damit man später im Archiv auch deinen Beitrag und die Antworten dazu findet.
Hier mein so ein Ansatz für dein Problem:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim neuB As Variant
Dim i As Integer
If Target.Address = "$A$1" Then 'in A1 wird der Bestand eingegeben
neuB = Target.Value
i = 2 'nächste freie Zelle suchen
Do While Worksheets(2).Cells(i, 1).Value <> ""
i = i + 1
Loop
If Worksheets(2).Cells(i - 1, 1).Value = neuB Then 'schauen ob neuer Bestand = alter Bestand
Exit Sub
Else: Worksheets(2).Cells(i, 1).Value = neuB 'neuen Bestand eintragen
Worksheets(2).Cells(i, 2).Value = Now 'Datum eintrage
Worksheets(2).Cells(i, 3).Value = Worksheets(2).Cells(i, 1).Value - Worksheets(2).Cells(i - 1, 1).Value 'Bestanddifferenz eintragen
End If
End If
End Sub

Viel Erfolg
Stephan

Anzeige
AW: Wohl nur für Profis
30.07.2003 10:01:28
Walter
Danke für die schnelle Hilfe!
ich glaube, ich habe mich nicht exakt ausgedrückt - hab auch leider nicht die VBA- Kenntnisse, um mit den vorliegenden Antworten etwas anzufangen. Deshalb nochmals:
Im Tabellenblatt "Lagerbestand" bedindet sich eine Tabelle:
Kunde, Art-bez., Art.-Nr.,Lagerplatz und Lagerbestand
all diese Felder haben bereits Werte. Der User filtert eine Zeile und ändert v.a. den Bestand, evtl. den Lagerplatz.
Im Tabellenblatt "Akkumulation" eine weitere Tabelle:
Datum, Wareneingang, Warenausgang, Kunde, Art., sowie Lagerplatz und Bestand
Sobald eine Änderung in "Lagerbestand" in den Feldern Lagerplatz/Lagerbestand passiert, soll eine Zeile in "Akkumulation" geschrieben werden, die das heutige Datum schreibt (soll beim nächsten Aufruf das alte Datum beibehalten), die Bestandsbewegung entsprechend in Ein-/Ausgang einträgt (Differenz alter Wert zu neuer Wert) und akt. Lagerplatz und Bestand einträgt.
Ich befürchte, jetzt wirds schon komplizierter.

Anzeige
AW: Wohl nur für Profis
30.07.2003 10:11:26
Stephan
Hi Walter!
ich befürchte, ohne VBA wird das nicht gehen. Aber vielleicht nutzt du ja die Gelegenheit und springst in das kalte VBA-Wasser. Du wirst sehen, da tut sich ein wahrer Ozean an neuen Möglichkeiten auf. Und so schwierig ist es nicht ...
Gruß
Stephan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige