Office: (Office 2013) Bestandsführung (Wareneingang/Warenausgang umbuchen)

Helfe beim Thema Bestandsführung (Wareneingang/Warenausgang umbuchen) in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hey, guten Abend :) Das funktioniert jetzt beides offenbar einwandfrei! :) Anstelle von .Clear musste ich aber wohl für Spalten F und H einfach... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Nina97, 9. Januar 2016.

  1. Nina97 Erfahrener User

    Bestandsführung (Wareneingang/Warenausgang umbuchen)


    Hey, guten Abend :)

    Das funktioniert jetzt beides offenbar einwandfrei! :)

    Anstelle von .Clear musste ich aber wohl für Spalten F und H einfach nur .Validation.Delete benutzen, damit Rahmen, Schriftgröße, etc. nicht verloren gehen.

    Ist ja auch eh besser, wenn ich keine Schriftgrößenformatierung vornehme, die könnte sich ja jederzeit ändern, sobald jemand umstellt.

    Vielen Dank! :)

    Jetzt habe ich noch das "Suchen"-Textfeld gestrichen und rufe einfach nur die Standardsuche über den "Suchen"-button auf.

    Den neu gewonnen Platz würde ich gerne für einen "Artikel zählen"-button nutzen, der zum einen die Gesamtzahl an Einträgen und zum anderen die Anzahl der einzelnen Warengruppeneinträge ausliest und in einer MsgBox ausgibt.

    Ich weiß wohl, dass dazu wieder ein Loop benutzt werden muss und jeder Warengruppe eine Variable zugewiesen, die bei "Treffer" + 1 bekommt. Also muss ich bei jeder Zelle den Inhalt abfragen und wenn = x dann varX + 1 und am Ende den Wert in der MsgBox wiedergeben und dann wohl wieder auf 0 setzen? Naja, zumindest das Aussehen habe ich schon einmal :p

    Code:
    
    Sub counterBox()
    
    Dim strWG1, strWG2, strWG3, strAll As String
    
    strWG1 = "1-Beispiel"
    strWG2 = "2-Beispiel"
    strWG3 = "3-Beispiel"
    strAll = "Gesamt"
    
    MsgBox strWG1 & vbTab & vbLf _
            & strWG2 & vbTab & vbLf _
            & strWG3 & vbTab & vbLf _
            & strAll & vbTab
    
    End Sub
    
    
    Ich versuche aber mein Beste, es einigermaßen hinzubekommen, noch ist es ja früh :D


    Liebe Grüße. :)
     
  2. Nina97 Erfahrener User
    Also so habe ich jetzt wenigstens schon einmal hinbekommen Bestandsführung (Wareneingang/Warenausgang umbuchen) :eek:

    Code:
    
    Sub counterBox()
    
    Dim strWG, strAnz, strWG1, strWG2, strWG3, strWG4, strWG5, strWG6, strWG7, strAll As String
    Dim iVal1, iVal2, iVal3, iVal4, iVal5, iVal6, iVal7, iVal8 As Integer
    
    strWG = "Warengruppe"
    strAnz = "Anzahl"
    strWG1 = "1-Spiele/Puzzle"
    strWG2 = "2-Holzspielzeug"
    strWG3 = "3-Puppen"
    strWG4 = "4-Autos/LKW"
    strWG5 = "5-Playmobil"
    strWG6 = "6-Lego"
    strWG7 = "7-Sonstiges"
    strAll = "Gesamt"
    
    iVal1 = Application.WorksheetFunction.CountIf(Range("F8:F3333"), "WG1")
    iVal2 = Application.WorksheetFunction.CountIf(Range("F8:F3333"), "WG2")
    iVal3 = Application.WorksheetFunction.CountIf(Range("F8:F3333"), "WG3")
    iVal4 = Application.WorksheetFunction.CountIf(Range("F8:F3333"), "WG4")
    iVal5 = Application.WorksheetFunction.CountIf(Range("F8:F3333"), "WG5")
    iVal6 = Application.WorksheetFunction.CountIf(Range("F8:F3333"), "WG6")
    iVal7 = Application.WorksheetFunction.CountIf(Range("F8:F3333"), "WG7")
    iVal8 = iVal1 + iVal2 + iVal3 + iVal4 + iVal5 + iVal6 + iVal7
    
    MsgBox strWG & vbTab & strAnz & vbLf & vbLf _
            & strWG1 & vbTab & iVal1 & vbLf _
            & strWG2 & vbTab & iVal2 & vbLf _
            & strWG3 & vbTab & vbTab & iVal3 & vbLf _
            & strWG4 & vbTab & iVal4 & vbLf _
            & strWG5 & vbTab & iVal5 & vbLf _
            & strWG6 & vbTab & vbTab & iVal6 & vbLf _
            & strWG7 & vbTab & iVal7 & vbLf & vbLf _
            & strAll & vbTab & vbTab & iVal8
    
    End Sub
    
    
    Da gibts aber wahrscheinlich auch noch eine kürzere, schnellere oder klügere Lösung für :p
     
  3. Beverly
    Beverly Erfahrener User
    Hi Nina,

    das .Clear hatten wir deshalb eingeführt, weil sich mit .Validation.Delete die Gültigkeiten nicht löschen ließen - schau mal in deinen Beitrag 10.01.2016, 21:13, da hattest du dies angemerkt. Wenn es natürlich jetzt auch so funktioniert, dann umso besser.


    Was soll denn eigentlich gezählt werden - die Anzahl pro Warengruppe? Das kannst du so machen:

    Code:
    Sub AnzeigeJeWG()
        Dim objDictionary As Object
        Dim rngBereich As Range
        Dim varBereich As Variant
        Dim arrDaten As Variant
        Dim lngZaehler As Long
        Dim strAusgabe As String
        Set objDictionary = CreateObject("Scripting.Dictionary")
        Set rngBereich = Range("F8", Range("F7").End(xlDown))
        varBereich = rngBereich.Value
        For lngZaehler = LBound(varBereich) To UBound(varBereich)
            ' Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
            objDictionary(varBereich(lngZaehler, 1)) = 0
        Next lngZaehler
        ' Werte aus dem DictionaryObjekt an das Array übergeben
        arrDaten = objDictionary.keys
        ' Schleife über alle Felder des Arrays
        For lngZaehler = 0 To UBound(arrDaten)
            ' Inhalt des Feldes + Anzahl zusammensetzen
            strAusgabe = strAusgabe & vbLf & arrDaten(lngZaehler) & " " & _
                Application.CountIf(rngBereich, arrDaten(lngZaehler))
        Next lngZaehler
        If strAusgabe <> "" Then MsgBox strAusgabe
        Set objDictionary = Nothing
        Set rngBereich = Nothing
    End Sub
    
    
    Bis später,
    Karin
     
    Beverly, 15. Januar 2016
    #18
  4. Nina97 Erfahrener User

    Bestandsführung (Wareneingang/Warenausgang umbuchen)

    Hey :)

    Hm, stimmt! Ich habe jetzt noch einmal intensiv hin- und hergebucht und gelöscht (über die "Aktion"-buttons) und jetzt scheint es wie gewünscht zu funktionieren - hoffentlich bleibt es auch so :p

    Gerade habe ich nur einmal mehr Positionen in den Warenausgang gebucht, als es dort noch freie Spalten gab, das gab ein Problem, aber ich habe die Tabelle ja nur verkürzt, damit ich sie hier hochladen konnte, später wird es ja ausreichend Platz geben :)

    Und gezählt werden soll einmal die Gesamtanzahl an Artikeln in der Tabelle (ab Zeile 8) und dann noch einmal die jeweiligen Warengruppen für sich.

    Also beispielweise sind 5 Einträge für Warengruppe Holzspielzeug und 5 Einträge für Warengruppe Puppen, dann möchte ich in der MsgBox

    1 - Spiele/Puzzle 0
    2 - Holzspielzeug 5
    3 - Puppen 5
    ....
    Gesamt 10


    Liebe Grüße. :)
     
  5. Beverly
    Beverly Erfahrener User
    Hi Nina,

    meinen Code hast du schon getestet?

    Um noch die Gesamtanzahl hinzuzufügen, ergänze diese Zeile:

    Code:
        If strAusgabe <> "" Then MsgBox strAusgabe [COLOR=#0000ff]& vbLf & vbLf & "Gesamt " & Application.CountA(rngBereich)[/COLOR]
    
    
    Bis später,
    Karin
     
    Beverly, 15. Januar 2016
    #20
  6. Nina97 Erfahrener User
    Hey :)

    Ich musste noch eben meinen Neffen ins Bett bringen :)

    Den Code habe ich jetzt getestet und er funktioniert super!

    Nur die Ausgabe in der MsgBox ist etwas unpraktisch, da die Auflistung je nach Reihenfolge gefundener Werte variiert und Warengruppen ohne Artikel keine Berücksichtigung finden.

    Da wäre eine einheitliche Struktur von Warengruppe 1 bis 7 super, in der Warengruppen, von denen zu dem Zeitpunkt keine Artikel vorhanden sind, eine 0 zugewiesen bekommen. Und jeden Suchtreffer mit Wert "Warengruppe" könnte man als "Undefiniert" zählen (wenn jemand vergessen hat, die Warengruppe anzugeben, würde man das dort direkt sehen). :p


    Ich wollte noch sagen, dass ich das mehr als zu schätzen weiß, wie super du mir hilfst und ich hoffe ich gehe dir nicht auf die Nerven oder wirke irgendwie unverschämt, ohne dich hätte ich quasi noch ein weißes Blatt vor mir :)

    Liebe Grüße und außerdem natürlich ein schönes Wochenende! :)
     
    Zuletzt bearbeitet: 15. Januar 2016
  7. Nina97 Erfahrener User
    Heyho :)

    Ich habe jetzt gerade mein allererstes UserForm fertiggestellt, um die Anzahl der Artikel übersichtlicher anzeigen zu lassen :)

    Ist vielleicht nicht das Gelbe vom Ei, aber ich bin eigentlich ganz zufrieden so :p

    Naja, das wollte ich nur noch loswerden vor dem Schlafen :D

    Gute Nacht. :)
     
  8. Beverly
    Beverly Erfahrener User

    Bestandsführung (Wareneingang/Warenausgang umbuchen)

    Hi Nina,

    die gewünschte Reihenfolge in der Anzeige hätte man für die MsgBox selbstverständlich auch noch realisieren können, aber ein UserForm ist optisch gesehen natürlich wesentlich besser und du hast das sehr gut hinbekommen. :)

    Natürlich gibt es in einem Projekt immer etwas, was man noch verbessern/vereinfachen könnte - ich habe mal folgendes gemacht:

    1. der Titel des Userforms und die Überschrift werden aus dem Namen des gerade aktiven Tabellenblattes generiert
    2. der gesamte Code befindet sich im Activate-Ereignis des UserForms - das ist die gängige Programmierweise für das Füllen eines UserForms, es sei denn, irgend etwas spricht dagegen (was bei dir nicht der Fall ist)
    3. in Spalte B wird die letzte belegte Zeile ermittelt, sodass der Bereich nicht fix vorgegeben werden muss
    4. die Label für die Anzeige der Anzahl werden in einer Schleife gefüllt, was den gesamten Code schlanker macht


    Um Punkt 4 zu realisieren habe ich mich eines Hilfsmittels bedient, welches MS beim Programmieren von UserForms bereitstellt - es nennt sich Tag-Eigenschaft (tag = Etikett) der Steuerelemente. Diese Eigenschaft kann man nutzen, um Hinweise/Informationen unterzubringen, die man einfach nur auslesen muss, um sie dann im Code zu nutzen. Dazu habe ich die Warengruppe, deren Anzahl angezeigt werden soll, in die Tag-Eigenschaft jedes dieser 8 Label geschrieben. In der Schleife über alle Steuerelemente wird nun geprüft, ob die Tab-Eigenschaft nicht leer ist und falls nicht, wird die Anzahl eingetragen.

    Es ist aber nun generell die Frage: was soll gemacht werden, falls in Spalte F überhaupt etwas anderes steht als die 7 WG bzw. wenn die Zelle leer ist? Beides würde dann ja nicht berücksichtigt, wenn für "0 - Undefiniert" -> "Warengruppe" gezählt werden soll.

    Bis später,
    Karin
     
    Zuletzt bearbeitet: 16. Januar 2016
    Beverly, 16. Januar 2016
    #23
  9. Nina97 Erfahrener User
    Hey :)

    Erst einmal vielen Dank für das Lob, ich habe mein Bestmöglichstes gegeben :p

    Die Veränderungen finde ich richtig spitze! Und die Datei ist sogar noch einmal wesentlich kleiner geworden, ich hatte schon Probleme, unter 100kb zu kommen. :p

    Und in Spalte F kann doch eigentlich nichts anderes stehen, als die von dir genannten Werte oder?
    Also entweder ist Zelle F leer und dann sollte ja eigentlich die gesamte Zeile ebenfalls leer sein (und für die Artikelzählung uninteressant) oder die Zelle beinhaltet das DropDownMenü (sobald in Zelle B ein Barcode eingegeben wurde) oder übersehe ich da etwas?

    Ansonsten finde ich, ist die Datei echt großartig geworden, wie sie ist :)

    Ich hatte schon ein wenig überlegt, aber viel mehr ist mir nicht eingefallen - auch, um die Lücke zwischen den Schaltflächen zu schließen.
    Man könnte die "Speichern"- und "Warenausgang"-Schaltflächen einfach nach links ziehen oder man fügt vielleicht noch einen "Speichern&Beenden"-Button ein, wenn es sonst keine andere nützliche Spielerei gibt :)

    Nochmals tausend Dank und liebe Grüße! :)
     
  10. Beverly
    Beverly Erfahrener User
    Hi Nina,

    ok, andere Inhalte in den Gültigkeitszellen sind nicht möglich, aber man kann den Zellinhalt problemlos von Hand löschen.

    Bis später,
    Karin
     
    Beverly, 16. Januar 2016
    #25
  11. Nina97 Erfahrener User
    Huhu :)

    Also müsste man, falls Zelle B <> "" und Zelle F = "" And <> WG 1 - 7 Then Zelle F = "Warengruppe" ?

    Ich habe jetzt schonmal den ersten nützlichen Lückenfüller gefunden :)

    "Sicherungskopie" - dazu habe ich dann auch nochmal ein ähnliches UserForm erstellt und es funktioniert auch alles ganz gut, denke ich :)

    Allerdings ist es jetzt noch so, dass, wenn man ein neues Verzeichnis angibt, dieses bei erneutem Öffnen des UserForm auf den Ursprungswert zurückspringt. Um das zu umgehen müsste man den neuen Wert wohl in einer Zelle (Tabelle Auswahllisten) hinterlegen und von dort aus auslesen lassen oder?

    Die Datei ist jetzt schon 122kb groß, deshalb habe ich im Warenausgang abgespeckt :p

    Liebe Grüße und gute Nacht :)
     
  12. Beverly
    Beverly Erfahrener User
    Hi Nina,

    ich würde die Sicherungskopie im selben Ordner wie die eigentliche Arbeitsmappe ablegen, dann kannst du den Speicherpfad ganz einfach wie folgt anzeigen lassen:

    Code:
    Private Sub UserForm_Activate()
        PfadBox.Caption = [COLOR=#0000ff]ThisWorkbook[/COLOR].Path
    End Sub
    
    

    Die Sicherungskopie speichern kannst du dann so:

    Code:
    Private Sub SicherungButton_Click()
        Dim strName As String, strDatum As String
        strDatum = Format(Now(), "YY-MM-DD")
        strName = Application.Substitute([COLOR=#0000ff]ThisWorkbook.Name[/COLOR], ".xlsm", "")
        [COLOR=#0000ff]ThisWorkbook[/COLOR].SaveCopyAs Filename:=PfadBox.Caption & "\" & strName & "_" & strDatum & ".xlsm"
    End Sub
    
    

    Wenn du die Sicherungskopie allerdings in einem anderen Ordner speichern willst, dann musst du den Ordnernamen irgendwo in der Mappe ablegen:

    Code:
    Private Sub NeuerPfadButton_Click()
        Dim ordner As FileDialog
        Set ordner = Application.FileDialog(msoFileDialogFolderPicker) '4
        If ordner.Show = -1 Then
            PfadBox.Caption = ordner.SelectedItems(1)
            Worksheets("Auswahllisten").Range("I1") = ordner.SelectedItems(1)  '<==
        End If
        Set ordner = Nothing
    End Sub
    
    
    Beim Starten des UserForms läsdst du dann diesen Pfad in das Label des UserForms

    Code:
    Private Sub UserForm_Activate()
        PfadBox.Caption = Worksheets("Auswahllisten").Range("I1")
    End Sub
    
    



    Bis später,
    Karin
     
    Beverly, 17. Januar 2016
    #27
  13. Nina97 Erfahrener User

    Bestandsführung (Wareneingang/Warenausgang umbuchen)

    Hey :)

    Beides funktioniert super, dankeschööön! :)

    Liebe Grüße und gute Nacht! :)
     
  14. Nina97 Erfahrener User
    Hallo :)

    Ich habe die Arbeitsmappe heute einmal vorgezeigt und alle waren begeistert!

    Ich soll dir schöne Grüße und ein riesiges Dankeschön ausrichten! :)

    Das Ganze ist für eine soziale Einrichtung, in der Spielzeug- und Bekleidungsspenden entgegengenommen, wenn nötig und möglich aufbereitet und an bedürftige Familien "verkauft" werden. Echtes Geld ist dabei selbstverständlich nicht involviert, sondern eine eigene Währung (Taler), die monatlich zur Verfügung gestellt wird.

    So eine großartige Hilfe hätte ich niemals erwartet!

    Liebe Grüße und einen schönen Abend :)
     
Thema:

Bestandsführung (Wareneingang/Warenausgang umbuchen)

Die Seite wird geladen...
  1. Bestandsführung (Wareneingang/Warenausgang umbuchen) - Similar Threads - Bestandsführung Wareneingang Warenausgang

  2. Bestandsliste mit Suchfunktion

    in Microsoft Excel Hilfe
    Bestandsliste mit Suchfunktion: Hallo, Ich möchte mir für mein Ausrüstungslager eine Exceltabelle erstellen, in der ich einen Suchbegriff eingeben kann (z.B. Schlafsack) und mir dann der Lagerort (z.B. Kiste 1) angezeigt wird....
  3. Bestandsführung (Wareneingang/Warenausgang umbuchen)

    in Microsoft Excel Hilfe
    Bestandsführung (Wareneingang/Warenausgang umbuchen): Bestandsführung Schönen guten Abend! Habe hier im Anhang eine Datei. Leider habe ich zu wenig Ahnung von VBA um diese alleine anzupassen. Meine Frage: Ist es möglich in dieser Datei Spalten zu...
  4. Monatliche Wareneingänge seit 2003

    in Microsoft Access Hilfe
    Monatliche Wareneingänge seit 2003: Hallo, folgendes (mein) Problem: Ich habe zwar einige DB's mit Hilfe von einigen Foren erstellt und auch brauchbare Ergebnisse erzielt, doch hier scheitere ich. Seit Oktober 2003 erfassen wir...
  5. Bestandsliste wareneingang ausgang defekt

    in Microsoft Excel Hilfe
    Bestandsliste wareneingang ausgang defekt: Hallo, ich brauche eine Excel Tabele mit einer Bestandsliste mit einem wareneingang und einem warenausgang und defekt das rechnet excel auch alles richtig immer aus er zieht es ab von der...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden