Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
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
ComboBox füllen ohne Duplikate via VBA
28.12.2019 12:09:39
Jörg
Hallo Fachleute,
für eine Userform mit mehreren Comboboxen benötige ich einen Code, der mir die Boxen ohne Duplikate "füllt".
Für EINE Box klappt das auch mit einem Code, den ich hier im Forum fand:
Private Sub UserForm_Initialize() 'Tabelleninhalte _laden
Dim oDic As Object, meAr
Dim A As Long
Set oDic = CreateObject("Scripting.Dictionary")
With Sheets("Arten")
meAr = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
End With
For A = 1 To UBound(meAr)
oDic(meAr(A, 1)) = 0
Next
Box1.List = oDic.keys
End Sub

Wie kann ich den Code so anpassen, dass er für mehrere Comboboxen funktioniert?
(die Boxen lesen den Inhalt der Spalten A:D, später event. weitere)
Vielen Dank schon mal für Eure Hilfe.
VG Jörg

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox füllen ohne Duplikate via VBA
28.12.2019 12:38:51
GerdL
Hallo Jörg,
teste mal.
Private Sub UserForm_Initialize() 'Tabelleninhalte _laden
Dim oDic As Object, meAr
Dim A As Long
Dim S As Long
For S = 1 To 4  'Variable für Spalten A bis D
Set oDic = CreateObject("Scripting.Dictionary")
With Sheets("Arten")
meAr = .Range(.Cells(2, S), .Cells(.Rows.Count, S).End(xlUp))
End With
oDic(meAr(A, 1)) = 0
For A = 1 To UBound(meAr)
Next
Controls("Box" & S).List = oDic.keys   'Box1, Box2, Box3, Box4
oDic.RemoveAll
Next
Set oDic = Nothing
End Sub

Gruß Gerd
AW: ComboBox füllen ohne Duplikate via VBA
28.12.2019 13:57:43
Jörg
Hallo Gerd,
vielen Dank für Deine schnelle Antwort.
Leider krieg ich nen Laufzeitfehler '9', Index außerhalb des gültigen Bereichs.
Hast Du eine Idee?
Gruß Jörg
Anzeige
AW: ComboBox füllen ohne Duplikate via VBA
28.12.2019 14:05:32
GerdL
Hallo Jörg,
hast du eine Codezeile, in der der Fehler auftritt?
Ggf. ins Modul ganz oben Option Explicit schreiben, falls noch nicht vorhanden,
u. mit der F8- Taste im Einzelschrittmodus testen.
Gruß Gerd
AW: ComboBox füllen ohne Duplikate via VBA
28.12.2019 14:25:44
Matthias
Moin!
In dem Code ist ein kleiner Fehler. An Stelle der drei Zeilen hier:
oDic(meAr(A, 1)) = 0
For A = 1 To UBound(meAr)
Next

einfach diese Zeilen nehmen

For A = 1 To UBound(meAr)
oDic(meAr(A, 1)) = 0
Next

Da hat sich beim Reinkopieren, wohl der Fehlerteufel eingeschlichen. In der urspr. Variante gab es noch kein A und deshalb ging der ZUgriff ins leere. Zudem wäre die SChleife nutzlos. Dort soll ja aber duch jede Zeile gegangen werden.
VG
Anzeige
AW: ComboBox füllen ohne Duplikate via VBA
28.12.2019 15:28:46
Jörg
Hallo,
leider krieg ich jetzt die Fehlermeldung '70'Zugriff verweigert:
F8 (gelbe Markierung) springt zwischen diesen Zeilen des Codes
" oDic(meAr(A, 1)) = 0
Next"
hin und her.
Schon mal sorry, bin wirklich Anfänger.
AW: ComboBox füllen ohne Duplikate via VBA
28.12.2019 18:24:57
Matthias
Moin!
Bzgl. des Anfängers kein Problem.
Also die gelbe Zeile ist die, in welche du dich gerade beindest. Da du in einer Schleife bist, muss die da springen. Und wenn sie bis dahin noch läuft, war da kein Fehler.
Wenn die Fehlermeldung kommt, gibt es meist ein Fenster bei dem man auf Debuggen drücken kann. Dann wird die Zeile angezeigt, die den Fehler auswirft. Die wäre relevant.
Ansonsten poste mal den ganzen COde oder die DAtei. Der Code von GerdL funktioniert nämlich. Grad mal nachgebaut und getestet,
VG
Anzeige
AW: ComboBox füllen ohne Duplikate via VBA
28.12.2019 21:56:46
Matthias
Moin!
An Hand deiner Datei habe ich den Fehler gefunden. Du müsstst bei den Boxen 1 bis 4 unter den Eigenschaften die RowSource entfernen. Wenn dort ein Eintrag ist, kannst du der .list Eigenschaft nix zuweisen. Du kannst die Eigenschaft aber auch im Code leeren. Das ist einfacher, wenn du mehrere Boxen hast und die Gefahrt besteht, dass du eine vergißt. Würde dann so aussehen.
Private Sub UserForm_Initialize() 'Tabelleninhalte _laden
Dim oDic As Object, meAr
Dim A As Long
Dim S As Long
For S = 1 To 6 'Variable für Spalten A bis D
Controls("Box" & S).RowSource = ""
Set oDic = CreateObject("Scripting.Dictionary") '
With Sheets("Arten")
meAr = .Range(.Cells(2, S), .Cells(.Rows.Count, S).End(xlUp))
End With
For A = 1 To UBound(meAr)
oDic(meAr(A, 1)) = 0
Next
Controls("Box" & S).List = oDic.keys   'Box1, Box2, Box3, Box4
oDic.RemoveAll
Next
Set oDic = Nothing
End Sub

NAch dem Schleifenkopf wird dabei die RowSource geleert.
VG
Anzeige
AW: ComboBox füllen ohne Duplikate [GELÖST]
29.12.2019 10:45:06
Jörg
Moin Matthias und Gerd,
es funktioniert !!!
Vielen Dank für Eure Hilfe.
Schönen Sonntag noch. VG Jörg
AW: ComboBox füllen ohne Duplikate via VBA
28.12.2019 14:58:23
Jörg
Hallo Gerd,
hier gibts ein Problem:
Private Sub UserForm_Initialize()- besagte Fehlermeldung
Wenn ich so ändere Userform2..):
Private Sub UserForm2_Initialize()- keine Fehlermeldung, aber auch keine Ausführung des Codes.
Gruß Jörg
AW: ComboBox füllen ohne Duplikate via VBA
28.12.2019 15:31:33
GerdL
Hallo Jörg,
bitte die Kopfzeile von Ereignisprozeduren nicht ändern.
Teste bitte nochmal ohne meinen von Matthias festgestellten Fehler,
von mir kurz angetestet.
Private Sub UserForm_Initialize() 'Tabelleninhalte _laden
Dim oDic As Object, meAr
Dim A As Long, S As Long
Set oDic = CreateObject("Scripting.Dictionary")
For S = 1 To 4  'Variable für Spalten A bis D
With Sheets("Arten")
meAr = .Range(.Cells(2, S), .Cells(.Rows.Count, S).End(xlUp)).Value
End With
For A = 1 To UBound(meAr)
oDic(meAr(A, 1)) = 0
Next
Controls("Box" & S).List = oDic.keys   'Box1, Box2, Box3, Box4
oDic.RemoveAll
Next
Set oDic = Nothing
End Sub

Gruß Gerd
Anzeige
AW: ComboBox füllen ohne Duplikate via VBA
28.12.2019 16:36:13
Jörg
Hallo Gerd,
leider immer noch Laufzeitfehler '70'.
Und zwar gleich nach Click auf CommandButton2(Userform2.Show)
Der CB2 befindet sich in einer anderen Tabelle.(?)
Gruß Jörg

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige