Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
428to432
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
428to432
428to432
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Lagerliste die automatisch addiert

Lagerliste die automatisch addiert
22.05.2004 01:25:32
Georg
Hab im Anhang das Programm, aber komm einfach nicht dahinter:
Es soll folgend funktionieren: In A1 wird eine Produktnummer eingegeben, in C1 Verfallsdatum und in D1 die Menge die dazukommt.
Wenn eine Produktnummer noch nicht existiert wird ein neues angelegt. Ebenfalls wenn dieses Produkt bereits mit einem anderen Verfallsdatum vorhanden ist. ansonsten soll zum bestehenden addiert werden.
Funktioniert kurioser Weise manchmal?
Bitte um Hilfe steh da voll an.
Danke im Voraus.
Bitte hier mal ansehn:
https://www.herber.de/bbs/user/6606.xls

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Lagerliste die automatisch addiert
22.05.2004 10:21:54
Thomas
Guten Morgen Georg,
bin soeben beim Stöbern im Forum auf deinen Treat gestossen, der mich interresiert hat, da ich schon lange so eine Liste basteln wollte.
Ich würde gerne diese Liste von Dir übernehmen, allerdings mit einigen änderungen.
A1 ......... A2 ......... A3 ......... A4 ......... A5
Datum .. LT.Nr .. Kunde .. Sig. .. Druck
Da ich von Makros keinerlei Ahnung habe, würde ich mich freuen,
wenn Du mir dabei helfen könntest, so etwas auf die Beine zu stellen?
Dank im Voraus und ein schönes Wochenende
Gruß Thomas
Anzeige
erledigt. O.T
22.05.2004 11:23:44
Thomas
.
zwei spalten vergleichen
Christoph
hallo Georg,
zB so (als separates Makro oder eben in das Click-Ereignis des Commandbuttons)
Gruß Christoph
('ne Rückmeldung wäre nett)

Sub ZweiSpalten()
Dim i As Long, LRow As Long
Dim wks As Worksheet, boFnd As Boolean
Set wks = Sheets("Eingabe")
Application.ScreenUpdating = False
With Sheets("Tabelle2")
LRow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LRow
If .Cells(i, 1) = wks.Cells(1, 1) And _
.Cells(i, 3) = wks.Cells(1, 3) Then
.Cells(i, 4) = .Cells(i, 4) + wks.Cells(1, 4)
boFnd = True
Exit For
End If
Next i
If Not boFnd Then
wks.Rows(1).Copy
.Cells(LRow + 1, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: zwei spalten vergleichen
Georg
werd ich mal probieren, klingt ganz gut.
trotzdem hätt ich noch gern gewusst, warum meins nicht funzt?
Danke mal vorab.
AW: zwei spalten vergleichen
Georg
Kanns vielleicht auch sein, dass
Dim Eing As Variant
Dim Eing1 As Variant
Dim Eing2 As Variant
Dim Eing3 As Variant
hier das Problem liegt?
AW: zwei spalten vergleichen
22.05.2004 18:05:52
Christoph
Hi Georg,
nein, es liegt nicht an der Deklaration.
Ich hab mir deinen Code jetzt nicht bis ins Kleinste angeschaut, aber so wie ich das verstehe, prüfst du ob es die Nummer in Spalte A gibt. Wenn ja, dann prüfst du, ob der Eintrag in Spalte C gleich ist. Wenn das nicht der Fall ist, dann übertragst du die Werte aus "Eingabe".
Das ist so natürlich nicht korrekt, da ja der erste Treffer von Spalte A nicht unbedingt jener sein muss, bei dem auch Spalte C übereinstimmt.
Noch ein Tipp: verzichte auf die ganzen "Select" und "Activate". Das macht den Code unübersichtlich und außerdem langsam. Und Sprungmarken sind ebenfalls so eine Sache, die nicht grade der Übersichtlichkeit dienen.
Bsp:
statt:
wks.Cells(lngRow, 1).Select
ActiveCell.FormulaR1C1 = Eing
gleich:
wks.Cells(lngRow, 1) = Eing
Gruß
Christoph
Anzeige
AW: zwei spalten vergleichen
Georg
Danke schön, hab das jetzt verstanden.
If Not boFnd Then
wks.Rows(1).Copy
.Cells(LRow + 1, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If
hier nimmt er immer die letzte Reihe, es kann aber vorkommen, das inzwischen eine leere Zeile vorkommt, da die Tabelle2 händisch bearbeitbar wird.
Wie kann man das einbauen, zuerst eine leere Zeile füllt?
dann halt noch mal eine Schleife...
22.05.2004 20:24:01
Christoph
...allzu viele Schleifen sollte man sich allerdings auch nicht leisten.
Aber um bei dem Prinzip mit den Boolean-Variablen zu bleiben, könnte das so aussehen:
(bedenke aber, dass durch das Kopieren der Werte die Formate nicht übernommen werden. Daher solltest du die Spalte mit dem Datum zuvor als Datum formatieren)
Gruß
Christoph

Sub ZweiSpalten()
Dim i As Long, LRow As Long
Dim boFnd As Boolean, boLeer As Boolean
Dim wks As Worksheet
Set wks = Sheets("Eingabe")
Application.ScreenUpdating = False
With Sheets("Tabelle2")
LRow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LRow
If .Cells(i, 1) = wks.Cells(1, 1) And _
.Cells(i, 3) = wks.Cells(1, 3) Then
.Cells(i, 4) = .Cells(i, 4) + wks.Cells(1, 4)
boFnd = True
Exit For
End If
Next i
If boFnd = False Then
For i = 2 To LRow
If .Cells(i, 1) = "" Then
wks.Rows(1).Copy
.Cells(i, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
boLeer = True
Exit For
End If
Next i
If boLeer = False Then
wks.Rows(1).Copy
.Cells(LRow + 1, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If
End If
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: dann halt noch mal eine Schleife...
Georg
Hab mir da noch was überlegt:
möchte die Leerräume durch sortieren entfernen.
Sheets("Tabelle2").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
somit hätte ich 2 Fliegen mit einer Klappe, aber bin da wirklich noch ganz grün hinter den Ohren, was VBA anbelangt.
Hab das mit dem Makrorecorder erzeugt, nur funktionierts so nicht.
Wie kann ich das automatisch mitlaufen lassen ?
*Tu mir da wirklich sehr schwer - DANKE nochmal für Deine Hilfe!*
Anzeige
DANKE läuft
Georg
Habs inzwischen zum laufen gebracht. Danke für alles.
'-------------sortieren------------

Set wks = Sheets("Tabelle2")
'Sheets("Tabelle2").Select
wks.Range("A2:D1000").Sort key1:=wks.Range("B2"), order1:=xlAscending, header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Danke für die Rückmeldung
23.05.2004 06:19:29
Christoph
Hallo Georg,
ich würde wks nicht neu belegen. Wir sind ja schon die ganze Zeit in Sheets("Tabelle2")
Dann kannst du hier auch zuerst sortieren.
Set wks = Sheets("Eingabe")
Application.ScreenUpdating = False
With Sheets("Tabelle2")
LRow = .Cells(Rows.Count, 1).End(xlUp).Row
.Range("A2:D" & LRow).Sort key1:=.Range("B2"), order1:=xlAscending, header:=xlNo
For i = 2 To LRow
'...usw... wie in der ersten Variante.
Gruß
Christoph
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige