Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1572to1576
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
Inhaltsverzeichnis

Listbox befüllen

Listbox befüllen
22.08.2017 12:05:12
stef26
Hallo Excelprofis,
ich versuche gerade mich an einer Listbox für meine Userform und bräuchte kurz mal Hilfe.
In Listbox2 mache ich die Überschriften.
In Listbox1 sollen die Daten rein.
Die Listbox 1 Filtere ich vorher noch. Dazu habe ich unter anderem eine Liste "AZGListe" im Namensmanager erstellt, die ich für den Filter verwenden möchte. Leider funktioniert das mit den Namen leider nicht.
Wie müsste ich die Abfrage ändern, damit er nur die Namen aus der AZGListe anzeigt?
Private Sub UserForm_Initialize()
ListBox2.AddItem Sheets("Themenliste").Cells(1, 1).Value
ListBox2.List(ListBox2.ListCount - 1, 1) = Sheets("Themenliste").Cells(1, 2).Value
ListBox2.List(ListBox2.ListCount - 1, 2) = Sheets("Themenliste").Cells(1, 3).Value
ListBox2.List(ListBox2.ListCount - 1, 3) = Sheets("Themenliste").Cells(1, 4).Value
ListBox2.List(ListBox2.ListCount - 1, 4) = Sheets("Themenliste").Cells(1, 5).Value
ListBox2.List(ListBox2.ListCount - 1, 5) = Sheets("Themenliste").Cells(1, 6).Value
ListBox2.List(ListBox2.ListCount - 1, 6) = Sheets("Themenliste").Cells(1, 7).Value
ListBox2.List(ListBox2.ListCount - 1, 7) = Sheets("Themenliste").Cells(1, 8).Value
ListBox2.List(ListBox2.ListCount - 1, 8) = Sheets("Themenliste").Cells(1, 9).Value
ListBox2.List(ListBox2.ListCount - 1, 9) = Sheets("Themenliste").Cells(1, 10).Value
'Themenspeicher einlesen
ListBox1.Clear
With Sheets("Themenliste")
For intCounter = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(intCounter, 1)  "" And Rows(intCounter).RowHeight > 0 And .Cells(intCounter, 1) = _
AZGListe Then
ListBox1.AddItem .Cells(intCounter, 1).Value
ListBox1.List(ListBox1.ListCount - 1, 1) = .Cells(intCounter, 2).Value
ListBox1.List(ListBox1.ListCount - 1, 2) = .Cells(intCounter, 3).Value
ListBox1.List(ListBox1.ListCount - 1, 3) = .Cells(intCounter, 4).Value
ListBox1.List(ListBox1.ListCount - 1, 4) = .Cells(intCounter, 5).Value
ListBox1.List(ListBox1.ListCount - 1, 5) = .Cells(intCounter, 6).Value
ListBox1.List(ListBox1.ListCount - 1, 6) = .Cells(intCounter, 7).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = .Cells(intCounter, 8).Value
ListBox1.List(ListBox1.ListCount - 1, 8) = .Cells(intCounter, 9).Value
ListBox1.List(ListBox1.ListCount - 1, 9) = .Cells(intCounter, 10).Value
End If
Next intCounter
End With
End Sub
Liebe Grüsse
Stefan

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox befüllen
22.08.2017 12:24:14
Matthias
Moin! Also die Liste ist so ein Namensbereich oder? Wenn ja würde ich die Zeile hier
And .Cells(intCounter, 1) = AZGListe Then

durch die hier
and  Not Intersect(.Cells(intCounter, 1), Range("AZGListe")) Is Nothing Then

ersetzen. Damit prüft der Code, ob deine Zelle in dem Rangebereich deines Namensbereich liegt.
VG
AW: Listbox befüllen
22.08.2017 17:49:56
stef26
Hallo Matthias,
danke für deine Antwort.
Ja die Liste ist ein Namensbereich auf die Arbeitsmappe.
Bei mir bringt er folgenden Fehler:
Die Methode Intersect ist für das Objekt Global fehlgeschlagen.
Kannst du damit was anfangen?
Gruß
Stefan
Anzeige
AW: Listbox befüllen
22.08.2017 19:09:40
Matthias
Moin! Habe mal getestet, der Fehler tritt nur auf, wenn es den Bereich nicht gibt. Schaue mal, ob du wirklich einem Bereich den Namen AZGListe gegeben hast. Auch mal prüfen, ob da nicht noch Leerstellen drum herum sind. VG
AW: Listbox befüllen
22.08.2017 20:25:32
stef26
Hallo Matthiasm
die Liste ist vorhanden. Allerdings ist der Bereich so definiert, dass einige Zeilen noch leer sind.
Ist das das Problem? Kann man dies abfangen?
Wenn nicht werde ich versuchen den Bereich starr zu machen.
Danke auf jeden Fall
LG
Stefan
AW: Listbox befüllen
22.08.2017 20:37:23
stef26
Hallo Matthias,
ich hab nun den Namensbereich so definiert, dass keine leeren Zellen mehr enthalten sind. Leider bleibt der Fehler.
Dann hab ich den Namen komplett rausgenommen und
If Not .Cells(intCounter, 1)  "" And Rows(intCounter).RowHeight > 0 And Not Intersect(.Cells(intCounter, 7), Sheets("Setup").Range("A2:A3")) Is Nothing

Fehler immer noch vorhanden.
Irgendwie mag er das Intersect bei mir nicht?
Gruß
Stefan
Anzeige
AW: Listbox befüllen
22.08.2017 20:47:34
Matthias
Moin! Ich glaube ich verstehe jetzt das Problem. Beim Code prüft man, ob 2 Range sich überschneiden. Die liegen aber wohl in unterschiedlichen Blättern. Dann geht das natürlich nicht. Du willst also nur schauen, ob der Wert der Zelle als Wert auch in deinem Namensbereich vorkommt oder? VG
AW: Listbox befüllen
22.08.2017 21:51:53
stef26
ja genau
AW: Listbox befüllen
22.08.2017 20:55:13
Matthias
Mal schnell noch ne Frage. Wieviele Zellen beinhaltet (ode soll später mal beinhalten) den dein Namensbereich? DAnach würde ich jetzt den Code ändern. Bei rel. vielen würde ich es in eine Ojekt einlesen lassen, bei nur 2 würde ich es fest verknüpfen. Variante 1 wäre flexibler bei zukünftigen ANpassungen. Dein Namensbereich könnte dann bleiben. VG
Anzeige
AW: Listbox befüllen
22.08.2017 21:52:29
stef26
ca 20Stück
AW: Listbox befüllen
22.08.2017 21:16:53
Matthias
So nun aber! Hier mal ein Code der nun den Inhalt aus deinem Namensberich ausliest und dann vergleicht, ob der Zellewert darin vorkommt. Einfach mal probieren. VG
Private Sub UserForm_Initialize()
Dim auflistung As Object
Dim zelle As Object
Set auflistung = CreateObject("Scripting.Dictionary")
For Each zelle In Range("AZGListe")
If Not auflistung.exists(zelle.Value) Then auflistung.Add zelle.Value, 1
Next zelle
ListBox2.AddItem Sheets("Themenliste").Cells(1, 1).Value
ListBox2.List(ListBox2.ListCount - 1, 1) = Sheets("Themenliste").Cells(1, 2).Value
ListBox2.List(ListBox2.ListCount - 1, 2) = Sheets("Themenliste").Cells(1, 3).Value
ListBox2.List(ListBox2.ListCount - 1, 3) = Sheets("Themenliste").Cells(1, 4).Value
ListBox2.List(ListBox2.ListCount - 1, 4) = Sheets("Themenliste").Cells(1, 5).Value
ListBox2.List(ListBox2.ListCount - 1, 5) = Sheets("Themenliste").Cells(1, 6).Value
ListBox2.List(ListBox2.ListCount - 1, 6) = Sheets("Themenliste").Cells(1, 7).Value
ListBox2.List(ListBox2.ListCount - 1, 7) = Sheets("Themenliste").Cells(1, 8).Value
ListBox2.List(ListBox2.ListCount - 1, 8) = Sheets("Themenliste").Cells(1, 9).Value
ListBox2.List(ListBox2.ListCount - 1, 9) = Sheets("Themenliste").Cells(1, 10).Value
'Themenspeicher einlesen
ListBox1.Clear
With Sheets("Themenliste")
For intCounter = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(intCounter, 1)  "" And Rows(intCounter).RowHeight > 0 And auflistung.exists(.Cells( _
intCounter, 1)) Then
ListBox1.AddItem .Cells(intCounter, 1).Value
ListBox1.List(ListBox1.ListCount - 1, 1) = .Cells(intCounter, 2).Value
ListBox1.List(ListBox1.ListCount - 1, 2) = .Cells(intCounter, 3).Value
ListBox1.List(ListBox1.ListCount - 1, 3) = .Cells(intCounter, 4).Value
ListBox1.List(ListBox1.ListCount - 1, 4) = .Cells(intCounter, 5).Value
ListBox1.List(ListBox1.ListCount - 1, 5) = .Cells(intCounter, 6).Value
ListBox1.List(ListBox1.ListCount - 1, 6) = .Cells(intCounter, 7).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = .Cells(intCounter, 8).Value
ListBox1.List(ListBox1.ListCount - 1, 8) = .Cells(intCounter, 9).Value
ListBox1.List(ListBox1.ListCount - 1, 9) = .Cells(intCounter, 10).Value
End If
Next intCounter
End With
End Sub

Anzeige
AW: Listbox befüllen
22.08.2017 21:38:01
stef26
Hallo Matthias,
nun ist der Fehler weg. Allerdings liest er gar nichts mehr ein.
Der Suchwert ist in Spalte G (7). Habs versucht im Code anzupassen, aber liest trotzdem nichts ein.
Ich hab folgendes geändert:
If .Cells(intCounter, 1)  "" And Rows(intCounter).RowHeight > 0 And auflistung.exists(.Cells(  _
_
intCounter, 7)) Then
Muss ich das noch irgendwo anpassen?
Gruß
Stefan
AW: Listbox befüllen
22.08.2017 21:50:20
Matthias
Eigentlich sollte es passen. Deinen Namensbereich AZGListe gibt es aber wieder oder? Wenn nicht, den wieder anlegen. Alternativ (viele Wege führen nach Rom), mal die Zeile ausprobieren.
If .Cells(intCounter, 1)  "" And Rows(intCounter).RowHeight > 0 And Not Range("AZGListe").Find(.Cells(intCounter, 7)) Is Nothing Then

Damit sucht er gleich in deiner Range.
FAlls das nicht klappt (keine Fehlermeldung aber trägt auch nichts ein) mal die Indizes von .cells überprüfen und mal schrittweise durchgehen und schauen wie er die Zellen auswertet, wo er eigentlich was eintragen sollte. Alternativ maldie Datei hochladen (mit xls Format). VG
Anzeige
AW: Listbox befüllen
22.08.2017 22:00:57
stef26
Hallo Matthias,
jetzt läuft es! Ich weiß zwar nicht genau warum aber es läuft.
Ich werde mir jetzt mal Zeit nehmen mir die Unterschiede zu checken, damit ich auch lernen kann warum es jetzt geht.
Lieben herzlichen Dank für deine Unterstützung und dafür dass du selbst nach der 5ten doofe Frage von mir immer noch gewillt bist uns Nichtprofis zu unterstützen.
Danke und höchsten Respekt!!
Gruß
Stefan
OK abschließender Code
22.08.2017 22:07:53
Matthias
OK, freut mich, dass es läuft. HIer nun der abschließende Code nochmal zum anschauen. Er sollte jetzt so aussehen (das mit dem Dictionary konnte komplett wieder raus). VG
Private Sub UserForm_Initialize()
ListBox2.AddItem Sheets("Themenliste").Cells(1, 1).Value
ListBox2.List(ListBox2.ListCount - 1, 1) = Sheets("Themenliste").Cells(1, 2).Value
ListBox2.List(ListBox2.ListCount - 1, 2) = Sheets("Themenliste").Cells(1, 3).Value
ListBox2.List(ListBox2.ListCount - 1, 3) = Sheets("Themenliste").Cells(1, 4).Value
ListBox2.List(ListBox2.ListCount - 1, 4) = Sheets("Themenliste").Cells(1, 5).Value
ListBox2.List(ListBox2.ListCount - 1, 5) = Sheets("Themenliste").Cells(1, 6).Value
ListBox2.List(ListBox2.ListCount - 1, 6) = Sheets("Themenliste").Cells(1, 7).Value
ListBox2.List(ListBox2.ListCount - 1, 7) = Sheets("Themenliste").Cells(1, 8).Value
ListBox2.List(ListBox2.ListCount - 1, 8) = Sheets("Themenliste").Cells(1, 9).Value
ListBox2.List(ListBox2.ListCount - 1, 9) = Sheets("Themenliste").Cells(1, 10).Value
'Themenspeicher einlesen
ListBox1.Clear
With Sheets("Themenliste")
For intCounter = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(intCounter, 1)  "" And Rows(intCounter).RowHeight > 0 And Not Range("AZGListe"). _
Find(.Cells(intCounter, 7)) Is Nothing Then
ListBox1.AddItem .Cells(intCounter, 1).Value
ListBox1.List(ListBox1.ListCount - 1, 1) = .Cells(intCounter, 2).Value
ListBox1.List(ListBox1.ListCount - 1, 2) = .Cells(intCounter, 3).Value
ListBox1.List(ListBox1.ListCount - 1, 3) = .Cells(intCounter, 4).Value
ListBox1.List(ListBox1.ListCount - 1, 4) = .Cells(intCounter, 5).Value
ListBox1.List(ListBox1.ListCount - 1, 5) = .Cells(intCounter, 6).Value
ListBox1.List(ListBox1.ListCount - 1, 6) = .Cells(intCounter, 7).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = .Cells(intCounter, 8).Value
ListBox1.List(ListBox1.ListCount - 1, 8) = .Cells(intCounter, 9).Value
ListBox1.List(ListBox1.ListCount - 1, 9) = .Cells(intCounter, 10).Value
End If
Next intCounter
End With
End Sub

Anzeige
AW: OK abschließender Code
22.08.2017 22:59:10
stef26
Top noch einfacher ist immer gut :-)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige