Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
852to856
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
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kombinationsfeld befüllen

Kombinationsfeld befüllen
14.03.2007 21:57:27
Markus

Hallo,
mit angehängtem Code lasse ich mein Kombinationsfeld ("ComboAuswahl") befüllen.
Nun möchte ich als "Füllkriterium" sagen, dass das Kombinationsfeld keinen Eintrag mit einer Leerzeilen
enthalten darf und alle Einträge in der Combo die den Wert "europa" haben, ebenfalls im Kombinationsfeld gelöscht werden.
Für Hilfe schon jetzt vielen Dank!


Private Sub ComboAuswahl_Change()
Dim intC As Integer
Dim lngR As Long
lngR = 2
intC = (ComboAuswahl.ListIndex * 2) + 1
With listOptional
.Clear
If intC <= 0 Then Exit Sub
.ColumnCount = 2
Do
.AddItem Sheets("Suche").Cells(lngR, intC)
.List(.ListCount - 1, 1) = Sheets("Suche").Cells(lngR, intC + 1)
lngR = lngR + 1
Loop While Sheets("Suche").Cells(lngR, intC) <> ""
End With
End Sub
mfg,
Markus

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kombinationsfeld befüllen
17.03.2007 00:10:24
fcs
Hallo Markus,
folgende ungetestete Anpassung sollte beim Einlesen der Daten für die Kombobox leere Zellen und Zellen mit Eintrag "europa" überspringen
Gruss
Franz

Private Sub ComboAuswahl_Change()
Dim intC As Integer
Dim lngR As Long, wks As Worksheet
Set wks = Sheets("Suche")
intC = (ComboAuswahl.ListIndex * 2) + 1
With listOptional
.Clear
If intC <= 0 Then Exit Sub
.ColumnCount = 2
For lngR = 2 To wks.Cells(wks.Rows.Count, intC).End(xlUp).Row
If Not (IsEmpty(wks.Cells(lngR, intC)) _
Or LCase(wks.Cells(lngR, intC)) = "europa" _
Or wks.Cells(lngR, intC) = "") Then
.AddItem wks.Cells(lngR, intC)
.List(.ListCount - 1, 1) = wks.Cells(lngR, intC + 1)
End If
Next lngR
End With
End Sub

Anzeige
AW: Kombinationsfeld befüllen
17.03.2007 11:05:10
Markus
Hallo Franz,
vielen Dank für Deine Hilfe!
Leider erscheinen die Einträge mit "europa" bzw. Leerzeilen immer noch.
Es kommt aber auch keine Fehlermeldung!
Gruß,
markus
AW: Kombinationsfeld befüllen
18.03.2007 11:25:32
schauan
Hallo Markus,
Franz ging davon aus, dass europa usw. in der ersten Spalte steht. Du hattest nicht geschrieben, ob das dort oder daneben steht oder in beiden Spalten enthalten sein kann.
Verantwortlich sind diese codezeilen:
If Not (IsEmpty(wks.Cells(lngR, intC)) _
Or LCase(wks.Cells(lngR, intC)) = "europa" _
Or wks.Cells(lngR, intC) = "") Then
Wenn es nur in der zweiten Spalte steht müsstest Du das in intC + 1 ändern, oder Du musst 3 weitere Ors hinzufügen und beide Spalten prüfen.
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige
AW: Kombinationsfeld befüllen
18.03.2007 14:32:56
Markus
Hallo Andre,
erstmal viel Dank für Deine Antwort!
Wahrscheinlich habe ich mich bei meinem Problem auch falsch ausgedrückt.
Mein Kombinationsfeld ("ComboAuswahl") lasse ich zu beginn von einem ganz anderen Tabellenblatt befüllen.
Wählt der User nun aus "ComboAuswahl" einen Eintrag aus, gibt es auf meinem Formular ein
Listenfeld ("listOptional"), dass nun abhängig vom Eintrag im Kombinationsfeld befüllt wird.
Die Daten für das Listenfeld hole ich aus dem Tabellenblatt "Suche".
Dieses Tabellenblatt ist wie der angehängte Screenshot aufgebaut:
Userbild
Wählt der User nun z. B. Option 1 im Kombinationsfeld ("ComboAuswahl") aus, bekommt er im
Listenfeld ("listoptional") z. Z. folgende Einträge: australien, 0, europa, afrika
Jetzt möchte ich gerne filtern unabhängig welche Option der User auswählt, dass im Listenfeld
("listoptional") nie die Werte europa oder 0 angezeigt wird.
Viele Grüße,
Markus
Anzeige
AW: Kombinationsfeld befüllen
18.03.2007 18:09:37
schauan
Hallo Markus,
wenn es noch mehr Spalten gibt musst Du alle prüfen. Da Du schon einen code für die erste Spalte hast wäre das für Dich am einfachsten.
Wenn es jede zweite Spalte betrifft nimmst Du eben nicht +1, 2 und 3 sondern +2, 4 und 6 oder wie auch immer der Rhytmus aufgebaut ist.
Allerdings lässt Deine Beschreibung Auslegungen des Befüllens zu. So wie Deine Liste aus der letzten beschreibung ausschaut bekommst Du bei einer Zeilenweisen Füllung gar keine Daten in die Listbox oder die Füllung geht spaltenweise. australien 0 europa gibt es sowohöl waagerecht als auch senkrecht, afrika als viertes nur senkrecht oder waagerecht fehlt eine Option 4
Für Markus' Code wäre noch interessant, welchen Wert die Variable intC hat. Wenn Die 2 oder 4 oder 6 ist sollte es passen, wenn nicht musst Du sie anpassen.
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige
AW: Kombinationsfeld befüllen
18.03.2007 20:18:08
Markus
Hallo Andre,
der Aufbau ist immer so, dass die Werte im Tabellenblatt "Suche" für die Listbox in jeder 2. Spalte stehen (2, 4, 6, 8 ....).
Der code lässt auch offen, wie viele Spalten belegt sind, d. h. es wird immer geprüft ob meine Auswahl aus dem Kombinationsfeld "comboAuswahl" wie z. B. Option 1 im Tabellenblatt "Suche" in der 1. Zeile vorhanden ist und wenn ja, werden die Werte in die Listbox geladen.
Beispiel: Wähle ich Option 2 im Kombinationsfeld, werden mir untereinander im Listenfeld die Werte 0, 0, amerika, 0 angezeigt.
Meine Frage ist nun, wie ich meinen untenstehenden Code so anpasse, dass er auch immer automatisch die Spalten durchgeht und ich nicht vorab definieren muss, welche Spalten die Werte enthalten, da es unterschiedlich sein kann, wie weit die Spaltenbelegung im Tabellenblatt geht und dann natürlich die Werte "0" bzw. "europa" in der Listbox herausfiltert.
Gruß,
Markus

Private Sub ComboAuswahl_Change()
Dim intC As Integer
Dim lngR As Long, wks As Worksheet
Set wks = Sheets("Suche")
intC = (ComboAuswahl.ListIndex * 2) + 1
With listOptional
.Clear
If intC <= 0 Then Exit Sub
.ColumnCount = 2
For lngR = 2 To wks.Cells(wks.Rows.Count, intC).End(xlUp).Row
If Not (IsEmpty(wks.Cells(lngR, intC)) _
Or LCase(wks.Cells(lngR, intC)) = "europa" _
Or wks.Cells(lngR, intC) = "") Then
.AddItem wks.Cells(lngR, intC)
.List(.ListCount - 1, 1) = wks.Cells(lngR, intC + 1)
End If
Next lngR
End With
End Sub

Anzeige
AW: Kombinationsfeld befüllen
19.03.2007 18:06:58
schauan
Hallo Markus,
man muss doch ab und an manches dreimal lesen. Du hast Deine Bedingungen falsch gesetzt, genauer gesagt Deine logischen Operatoren. Wenn Du zum Beispiel fragst ob Deine Zelle nicht leer ist dann prüft Excel zwar, wie es mit den anderen Bedingungen ausschaut, aber eine Zelle mit europa ist ja auch nicht leer. Da Du OR verknüpft hast muss nur irgendeine von den 3 Bedingungen wahr sein. Wenn alle 3 Wahr sein sollen musst Du mit AND verknüpfen.
If Not IsEmpty(wks.Cells(lngR, intC)) _
And LCase(wks.Cells(lngR, intC)) <> "europa" _
And wks.Cells(lngR, intC) <> "" Then
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige
AW: Kombinationsfeld befüllen
19.03.2007 22:53:27
Markus
Hallo Andre,
danke für Deine Antwort!
Habe es jetzt nochmals mit Deiner Code-Anpassung probiert, aber leider werden wieder die Einträge mit 0 bzw. europa im Listenfeld mit angezeigt.
Ich habe jetzt mal meine Testdatei angehängt, wäre super wenn Du evtl. mal einen Blick darauf werfen könntest, was ich ständig falsch mache.
https://www.herber.de/bbs/user/41198.xls
Viele Grüße,
Markus
AW: Kombinationsfeld befüllen
20.03.2007 20:14:06
schauan
Hallo Markus,
Du hast noch einen weiteren Fehler, Du suchst in der falschen Spalte, das hatte ich ja schon vermutet.
intC = (ComboAuswahl.ListIndex * 2) + 1
ergibt z.B. 1 wenn Du die Option 1 auswählst (Listindex = 0). Anschliessend prüfst Du, ob in Spalte 1 europa usw. steht. Dort steht aber a b c d
besser wäre also
intC = (ComboAuswahl.ListIndex + 1) * 2
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige
AW: Kombinationsfeld befüllen
20.03.2007 20:22:55
schauan
.. und in der Zeile das + 1 wegnehmen
.List(.ListCount - 1, 1) = wks.Cells(lngR, intC + 1)
also so:
.List(.ListCount - 1, 1) = wks.Cells(lngR, intC)
AW: Kombinationsfeld befüllen
21.03.2007 19:05:00
Markus
Hallo Andre,
habe es entsprechend Deiner Hilfe ausgebessert und nun geht es auch problemlos!
Nochmals danke für Deine Hilfe!
Markus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige