AW: Dropdownliste aus 2 Spalten
11.02.2015 13:40:44
Hans
ja, ich glaube ich hätte dafür ein bisschen mehr erläutern sollen:
Also es soll eine Bestandsliste und -pflege werden. Auf dem ersten Blatt habe ich zwei Userforms; eine für Zugänge, eine für Abgänge, danach kommen 13 Tabellenblätter mit Artikelgruppen und in jedem einzelnen Blatt sind dann alle zum entsprechenden Tabellenblatt gehörenden Artikel aufgelistet.
In der Userform kann ich nun zunächst per Dropdown, das Tabellenblatt auswählen und dann kann ich in der zweiten Combobox die Artikel auswählen. Die Artikelbezeichnungen sind immer in Spalte A und C und in den Spalten B und D die jeweiligen Mengen. Klar, jetzt könnte man natürlich alle Artikel aus Spalte C unter A kopieren, das ist aber so gewollt, weil es zu (fast) jedem Artikel zwei Sorten gibt und so eine gute Übersicht bleibt.
Wenn ich nun die Artikelgruppe und den Artikel ausgewählt habe, wird mir in einer Textbox der aktuelle Warenbestand gezeigt und einer einer zweiten Textbox gebe ich die Anzahl der ab- oder zugehenden Mengen ein, welche nach dem Klick auf OK zum aktuellen Stand hinzugefügt bzw. abgezogen werden.
Den Code dafür habe ich mir aus dem Internet zusammengebastelt (mein VBA ist einfach noch zu schlecht), wird also noch mit einigen Fehlern behaftet sein, also nicht wundern :)
Hier mein bisheriger Code für die Userform "Abgänge":
Dim arr As Range
Dim ws As Worksheet
Dim LookupValue As String
Dim UpdateRow As Long
Private Sub ComboBox1_Change()
Set ws = Sheets(ComboBox1.Value)
With ws
Set arr = Union(.Range("A3", .Cells(.Rows.Count, 1).End(xlUp)), .Range("C3", .Cells(.Rows. _
Count, 3).End(xlUp)))
End With
ComboBox2.List = arr.Value
End Sub
Private Sub ComboBox2_Change()
Set ws = Sheets(ComboBox1.Value)
LookupValue = ComboBox2.Value
TextBox2.Value = Application.Index(ws.Range("B:B"), Application.Match(LookupValue, ws.Range("A: _
A"), 0))
UpdateRow = ws.Range("A:A").Find(what:=LookupValue, lookat:=xlWhole).Row
End Sub
Private Sub CommandButton1_Click()
Set ws = Sheets(ComboBox1.Value)
ws.Cells(UpdateRow, 2).Value = (ws.Cells(UpdateRow, 2).Value) - (TextBox1.Value)
MsgBox "Bestand von " & TextBox2.Value & " um " & (TextBox1.Value) & " auf " & ws.Cells( _
UpdateRow, 2).Value & " verringert"
End Sub
Private Sub UserForm_Initialize()
For i = 2 To ActiveWorkbook.Sheets.Count
ComboBox1.AddItem ActiveWorkbook.Sheets(i).Name
Next i
End Sub
Private Sub UserForm_Click()
End Sub
Was mir aber sehr wichtig ist, dass ich die Hilfsbereitschaft in diesem Forum nicht überstrapazieren will und wenn das hier zu weit gehen sollte, habe ich dafür vollstes Verständnis!