Permanente Inventur mit Excel 2003

Dieses Thema Permanente Inventur mit Excel 2003 im Forum "Microsoft Office Suite" wurde erstellt von batze, 6. Nov. 2004.

Thema: Permanente Inventur mit Excel 2003 Hallo, vielleicht könnt Ihr mir mal wieder bei einem Problem helfen. Ich habe eine Excel Datei welche in Spalten...

  1. Hallo,

    vielleicht könnt Ihr mir mal wieder bei einem Problem helfen.
    Ich habe eine Excel Datei welche in Spalten nach Artikel-Nr., Artikel Bezeichnung, VendePart-Nr., UPC, Stückzahl zum Inventurdatum, derzeitiger Bestand usw. eingeteilt ist.
    Nun meine Frage ...
    Wie kann ich es realisieren, dass durch abscannen des UPC-Codes auf dem Artikel (wird in eine extra Zelle eingescannt) automatisch mein zum UPC-Code gehörender Bestand um 1 reduziert wird???
    ... Es soll also die Spalte mit dem UPC-Code durchsucht werden und bei Übereinstimmung die Spalte Bestand in der dazugehörenden Zeile um 1 reduziert werden.
    Meine bisherige Formel (in einer weiteren Spalte (Spalte J = Restbestand))
    =WENN($D$2=$F:$F;SVERWEIS($D$2;$F:$I;4)-1;$I7)
    schafft das zwar, aber logischer Weise eben nur 1x, da sie immer von
    der Spalte I (= Bestand zum Inventurstichtag) ausgeht. Ändere ich die Formel, so dass von der Spalte Restbestand abgezogen wird erhalte ich die Fehlermeldung Zirkelbezug.
    Wie kann ich dieses Problem lösen???
     
  2. Hi batze,

    du könntest mit einem Makro die besagte Zelle überwachen.
    Wenn dann ein UPC-Code in der Zelle steht, könnte der Makro die notwendigen Berechnungen durchführen und die besagte Zelle anschliessend leeren, so daß der nächste Code eingegeben werden kann.

    Gruß Matjes :)
     
  3. oh, ah, hi ...
    es geht also irgendwie??? :)

    Danke Matjes,

    ich weiß zwar wie man Makros aufzeichnet und in Symbolleisten unterbringen kann, aber könntest Du mir bitte noch ein bisschen weiter helfen? Ich will ja nicht verlangen, dass Du mir jetzt einen Code oder so schreibst, aber irgendwie brauche ich leider noch weitere Hilfe, denn ich weiß eigentlich jetzt nur, dass es funktionieren müsste.
    ... aber wie genau???

    Thank`s
     
  4. Hi batze,

    schick mir die Datei (oder falls geheim eine Beispieldatei) mit einer kleinen Beschreibung per mail. Dann werde ich dir ein kleines Beispiel erstellen.

    Beschreibung sollte enthalten:
    a) Wie erkenne ich, dass der UPC-Code gültig ist.
    b) Was soll passieren, wenn ein ungültiger UPC-Code eingegeben wurde.
    c) Was soll passieren, wenn ein gültiger UPC-Code eingegeben wurde.

    Gruß Matjes :)
     
  5. Dafür hätte ich was.
    Zuvor aber: was heißt in eine extra Zelle eingescannt. Heißt das, daß das Scan-Ergebnis immer in Zelle A1 (beispielsweise) reinkopiert wird und von hier aus die Spalte D durchsucht wird?

    Mit einer Hilfsspalte kannst du per Makro aktueller Bestand minus Scan-Menge per Formel ausrechnen, dann den Wert des aktuellen Bestands überschreiben und die Scanmenge wieder auf Null setzen.

    Also:
    Spalte A Spalte B Spalte C Spalte D
    = Bestand = Scan-Menge = Übertrag der Scan-Menge = Formel =A2-B2
    25 1 =A3-B3

    Wenn jetzt in B3 eine 1 reingeschrieben wird, geht das Makro los.
    Im Code des Tabellenblatte muß folgendes stehen.
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
           ->Target ist die definierte Zielspalte für den Eintrag der Scan-Menge
      If Target.Column = 2 Then  ->wenn in Spalte 2 (B) was reingeschrieben wird
            Target.Copy->kopiere was gerade reingeschrieben wurde
            Target.Offset(0, 1).Select->gehe Null runter und 1 nach rechts
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False->füge den Wert ein
            Target.Offset(0, 2).Select->gehe Null runter und 2 nach rechts
            Selection.Copy->kopiere das
            Target.Offset(0, -1).Select->gehe Null runter und 1 nach links (also in den aktuellen Bestand)
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False->füge den Wert ein
                                   ->(also ohne die Formel mitzunehmen wie bei Strg+C und Strg+V)
            Target.Offset(0, 1).Select->gehe Null runter und 1 nach rechts
         Selection.Clear->Hilfsspalte C wieder leeren
      End If
    End Sub
    Oder so... ;D
     
  6. Hallo Matjes, hallo Klexy,

    vielen herzlichen Dank, für Eure professionelle Hilfe!!!
    In diesem Forum lauern anscheinend einige Genies!?!?
    Echt super von Euch! Macht weiter so!

    Übrigens: Natürlich konnte mein 2. Problem mit dem ich mich an dieses Forum wandte innerhalb kürzester Zeit von Euch professionell gelöst werden. Besonderer Dank speziell an Matjes, der mir einen VBA-Code direkt in meine Excel-Tabelle schrieb!

    Thank´s
     
  7. Hi zusammen,

    hier nochmal der Code zum nachlesen.

    Die Zelle D2 und D3 werden auf Änderung überwacht.
    Eingabe in D2 stellt einen Ausgang dar.
    Eingabe in D3 stellt einen Eingang dar.

    Gruß Matjes :)

    Code:
    Option Explicit
    
    'Zelle Eingabe Ausgang UPC-Nr. (D2)
    Const c_rowUPCout = 2->Zeile  UPC-Code Ausgang
    Const c_colUPCout = 4->Spalte UPC-Code Ausgang
    'Zelle Meldungs-Ausgabe Ausgang UPC-Nr. (G2)
    Const c_rowUPCout_meld = 2->Zeile  UPC-Code Ausgang Meldung
    Const c_colUPCout_meld = 7->Spalte UPC-Code Ausgang Meldung
    
    'Zelle Eingabe Eingang UPC-Nr. (D3)
    Const c_rowUPCin = 3     ->Zeile  UPC-Code Eingang
    Const c_colUPCin = 4     ->Spalte UPC-Code Eingang
    'Zelle Meldungs-Ausgabe Eingang UPC-Nr. (G3)
    Const c_rowUPCin_meld = 3->Zeile  UPC-Code Eingang Meldung
    Const c_colUPCin_meld = 7->Spalte UPC-Code Eingang Meldung
    
    'Spalten der Tabelle
    Const c_col_vendornbr = 1
    Const c_col_vendorname = c_col_vendornbr + 1
    Const c_col_Lagerplatz = c_col_vendorname + 1
    Const c_col_Productdescr = c_col_Lagerplatz + 1
    Const c_col_skuNr = c_col_Productdescr + 1
    Const c_col_UPCNr = c_col_skuNr + 1
    Const c_col_VendorNr = c_col_UPCNr + 1
    Const c_col_palletqty = c_col_VendorNr + 1
    Const c_col_BOHQty = c_col_palletqty + 1
    Const c_col_NeuerBestand = c_col_BOHQty + 1
    
    Const c_col_lastColumn = c_col_NeuerBestand
    
    'erste Zeile mit Werten
    Const c_row_FirstValue = 8
    
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
     
     ->eine Zelle geändert
      If Target.Count = 1 Then
      
     ->*** Eingabe Ausgang ?
        If Target.Column = c_colUPCout And Target.Row = c_rowUPCout Then
          If Cells(c_rowUPCout, c_colUPCout).Value <>  Then
            Application.EnableEvents = False->Ereignisse ausschalten
            Call Ausgang_UPC(Cells(c_rowUPCout, c_colUPCout).Value)
            Application.EnableEvents = True->Ereignisse einschalten
          End If
     ->*** Eingabe Eingang ?
        ElseIf Target.Column = c_colUPCin And Target.Row = c_rowUPCin Then
          If Cells(c_rowUPCin, c_colUPCin).Value <>  Then
            Application.EnableEvents = False->Ereignisse ausschalten
            Call Eingang_UPC(Cells(c_rowUPCin, c_colUPCin).Value)
            Application.EnableEvents = True->Ereignisse einschalten
          End If
        End If
      End If
    End Sub
    Private Sub Ausgang_UPC(UPCNr As Double)
    
      Dim l_Anz_row As Long, Zelle As Range
      
     ->in c_col_UPCNr UPC-Nr suchen
      l_Anz_row = Cells(Rows.Count, c_col_UPCNr).End(xlUp).Row
      Set Zelle = ActiveSheet.Range(Cells(c_row_FirstValue, c_col_UPCNr), _
                  Cells(l_Anz_row, c_col_UPCNr)).Find(UPCNr, _
                  LookIn:=xlValues, LookAt:=xlWhole)
      
      If Zelle Is Nothing Then
       ->nicht gefunden -> Meldung not found
        Cells(c_rowUPCout_meld, c_colUPCout_meld).Value = UPCNr &  not found
      Else
       ->gefunden :-)
       ->Ausgang vom Bestand abziehen
        Cells(Zelle.Row, c_col_NeuerBestand).Value = _
          Cells(Zelle.Row, c_col_NeuerBestand).Value - 1
          
       ->UPC-Nr. als letzte bearbeitete eintragen
        If Cells(Zelle.Row, c_col_NeuerBestand).Value > 0 Then
          Cells(c_rowUPCout_meld, c_colUPCout_meld).Value = UPCNr
        ElseIf Cells(Zelle.Row, c_col_NeuerBestand).Value = 0 Then
          Cells(c_rowUPCout_meld, c_colUPCout_meld).Value = _
            UPCNr &  counter equal 0
        ElseIf Cells(Zelle.Row, c_col_NeuerBestand).Value < 0 Then
          Cells(c_rowUPCout_meld, c_colUPCout_meld).Value = _
            UPCNr &  counter less 0
        End If
        Set Zelle = Nothing
      End If
     ->Eingabezelle löschen
      Cells(c_rowUPCout, c_colUPCout).Value = 
    End Sub
    Private Sub Eingang_UPC(UPCNr As Double)
    
      Dim l_Anz_row As Long, Zelle As Range, i As Long
      
     ->in c_col_UPCNr UPC-Nr suchen
      l_Anz_row = Cells(Rows.Count, c_col_UPCNr).End(xlUp).Row
      Set Zelle = ActiveSheet.Range(Cells(c_row_FirstValue, c_col_UPCNr), _
                  Cells(l_Anz_row, c_col_UPCNr)).Find(UPCNr, _
                  LookIn:=xlValues, LookAt:=xlWhole)
      
      If Zelle Is Nothing Then
       ->nicht gefunden -> Meldung->new value'
        Cells(c_rowUPCin_meld, c_colUPCin_meld).Value = UPCNr &  new value
       ->erste Wertezeile duplizieren
        Rows(c_row_FirstValue).Copy
        Rows(c_row_FirstValue).Insert Shift:=xlDown
       ->Werte löschen
        For i = 1 To c_col_lastColumn
          Cells(c_row_FirstValue, i).Value = 
        Next
       ->UPC-Nr in neue Zeile eintragen
        Cells(c_row_FirstValue, c_col_UPCNr).Value = UPCNr
       ->Bestand auf 1
        Cells(c_row_FirstValue, c_col_NeuerBestand).Value = 1
      Else
       ->gefunden :-)
       ->Eingang zum Bestand hinzuzählen
        Cells(Zelle.Row, c_col_NeuerBestand).Value = _
          Cells(Zelle.Row, c_col_NeuerBestand).Value + 1
       ->UPC-Nr. als letzte bearbeitete eintragen
        Cells(c_rowUPCin_meld, c_colUPCin_meld).Value = UPCNr
        Set Zelle = Nothing
      End If
     ->Eingabezelle löschen
      Cells(c_rowUPCin, c_colUPCin).Value = 
    End Sub
     
Die Seite wird geladen...

Permanente Inventur mit Excel 2003 - Ähnliche Themen

Forum Datum
permanenter Neustart beim Bootvorgang von Festplatte oder CD Hardware 28. Aug. 2013
Permanenter Internettrafik normal? Sonstiges rund ums Internet 3. Apr. 2012
Permanente Fehlermeldung bei AntiVir Software: Empfehlungen, Gesuche & Problemlösungen 22. Apr. 2008
Permanente Cookies Problem ?? Windows XP Forum 19. Sep. 2007
Erfahrungen : permanente, mysteriöse IP Belagerung ? Windows XP Forum 31. Juli 2007