5.9k Aufrufe
Gefragt in Tabellenkalkulation von nick2507 Mitglied (231 Punkte)
Hallo ihr Lieben,

ich bin seit einigen Tagen an einer VBA Programmierung (Excel 2003) und komme einfach nicht mehr weiter. :-(

Das Problem:

Ich habe ein Tabellenblatt (Artikelliste) und ein Tabellenblatt (Zugänge). Zudem habe ich eine Userform mit zwei Comboboxen. Die eine soll die Produktgruppen aus der Artikelliste lesen. Nach dem eine ausgewählt wurde, sollen alle dazugehörigen Artikelnummer in der zweiter Combobox angezeigt werden.

Beispiel:

Combobox1 = Löffel
Combobox2= 12345 und 45697b und so weiter.

Falls ihr nicht so ganz wisst, was ich meine, würde ich die Datei auch per Mail senden. (ich weiß leider nicht, wie man hier eine Datei hochladen kann).

VG

20 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo,

per Mail geht hier nix, aber Du könntest die Datei über diese Adresse ins Netz stellen und den Download-Link hier posten.

Gruß
Rainer
0 Punkte
Beantwortet von nick2507 Mitglied (231 Punkte)
Vielen Dank Rainer,

hier ist der Link. :-)

www.file-upload.net/download-3696499/Lagerbestand4.xls.html
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo nick2507,

sorry, aber Dein VBA-Projekt ist mir zu komplex um dies zu analysieren und Fehler zu suchen bzw. es an zu passen.

Hier sind die VBA-Spezialisten unter den Helfern gefragt.

Gruß
Rainer
0 Punkte
Beantwortet von nick2507 Mitglied (231 Punkte)
Ich danke dir trotzdem!!! :-)

Vlt. gibt es ja jemand, der sich dieses Mamutproblem annehmen kann. :'-(

Gruß
Nick2507
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Nick,

bei solch einem umfangreichen Projekt müsstest du zumindest einmal genau sagen, um welches UserForm und welche 2 ComboBoxen es sich handelt. Außerdem müsste man wissen, in welcher Spalte die auszulesenden Daten stehen - "Löffel" z.B. kann ich nirgendwo in deiner Artikeliste finden.

Bis später,
Karin
0 Punkte
Beantwortet von nick2507 Mitglied (231 Punkte)
Hallo Karin, :-)

das Beispiel diente lediglich zur Veranschaulichung, ohne direkt auf die Datei einzugehen. Ich gebe dir völlig recht, dass ich meine bisherigen Angaben nicht hinreichend dargestellt habe.

Es handelt sich hierbei um die UserForm "Zugänge". Die zwei Comboboxen heißen ProduktgruppeCmb und Combobox1. Beide befinden sich auf der UserForm ZugängeUsf.

Genau genommen möchte ich, dass die Combobox "ProduktgruppeCmb" alle Produktgruppen aus der Artikelliste auflistet (ohne Doppelungen). Nachdem eine Produktgruppe (z.B. Glas) ausgewählt wurde, soll die zweite Combobox aktiviert werden, denn sie soll zu der Produktgruppe "Glas" alle dazugehörigen Artikelnummern anzeigen.

Ich hoffe, dass die Informationen weitesgehend ausreichen?
Ich habe es nicht so mit dem Beschreiben. :-S

Gruß
Nick2507
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Nick,

ändere deinen Code wie folgt:

Private Sub produktgruppecmb_change()
Dim lngZeile As Long
Dim rngZelle As Range
With Worksheets("Artikelliste")
Set rngZelle = .Columns(3).Find(ProduktgruppeCmb, lookat:=xlWhole)
lngZeile = rngZelle.Row
Do
ComboBox1.AddItem rngZelle.Offset(0, -1)
Set rngZelle = .Columns(3).FindNext(rngZelle)
If rngZelle.Row = lngZeile Then Exit Do
Loop
End With
End Sub

und ergänze das Initialize-Ereignis des UserForms durch diesen Code:
Dim objDictionary As Object
Dim Bereich As Variant
Dim lngZaehler As Long
Set objDictionary = CreateObject("Scripting.Dictionary")
With Worksheets("Artikelliste")
Bereich = .Range("C4", .Range("C4").End(xlDown))
' Schleife über alle Werte des 1. Bereichs
For lngZaehler = LBound(Bereich) To UBound(Bereich)
objDictionary(Bereich(lngZaehler, 1)) = 0 ' Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
Next
ProduktgruppeCmb.List = objDictionary.keys
End With

Bis später,
Karin
0 Punkte
Beantwortet von nick2507 Mitglied (231 Punkte)
Hey super Karin,

das klappt richtig gut!!! :-D

Mir ist aufgefallen, dass die zweite Combobox (Combobox1) alle entsprechenden Artikel listet aber auch noch die, die vorher ausgewählt wurden.

Also wenn ich Besen auswähle, zeigt er mir den Artikel vom Besen an und wenn ich danach z.B. "WC- Bedarf" auswähle lässt er den Artikel vom Besen mit drin und fügt alle aktuellen Artikel von der Produktgruppe WC- Bedarf hinzu, ohne den Artikel von der Produktgruppe Besen zu löschen. :-(

Kann man da auch noch was machen?

Viele liebe Grüße

Nick2507
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Nick,

setze an den Anfang des Codes noch
ComboBox1.Clear


Bis später,
Karin
0 Punkte
Beantwortet von nick2507 Mitglied (231 Punkte)
Danke dir, da hätte ich selber drauf kommen können. xD

Gruß
Nick2507
...