PDA

Vollständige Version anzeigen : Userform mit Combobox und leeren Feldern


messias
21.02.2008, 21:39
Hallo

ich habe ein Userform mit einer Combobox.
Die Combobox soll die Werte der Spalte E haben.
Ich fülle die Combobox wie folgt:

UserForm2.Show 0
UserForm2.ComboBox1.RowSource = "E7:E" & ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row

jetzt habe ich aber leere Einträge in der Liste, da es leere Zellen in Spalte E gibt.
Wie bekomme ich diese aus der Liste ?

Gruß

Holger

messias
21.02.2008, 21:51
Noch was vergessen :-)

Doppelte Einträge dürften auch nicht enthalten sein.

messias
21.02.2008, 22:29
Habs jetzt mit

Dim Anfang, Ende, x
Anfang = 7
Ende = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row

For x = Anfang To Ende
If Cells(x, 5) <> "" Then
UserForm2.ComboBox1.AddItem Cells(x, 5)
End If
Next x

versucht, bekomme aber die Meldung "70 Zugriff verweigert" :mad:

Hat einer eine Idee?

messias
21.02.2008, 22:39
.... :mad: Fehler gefunden!
Hate im Form/ComboBox unter RowSource noch einen Eintrag!

Die leeren Einträge hätte ich weg, fehlen nur noch die doppelten.

Das weis ich aber nicht wie ! :rolleyes:

jinx
22.02.2008, 06:07
<font size="2" face="Century Gothic">Moin, Holger,

z.B. die WorksheetFunction.CountIf ansetzen, um den Wert der Zelle im bisher durchlaufenen Bereich auf das Vorkommen von 1 zu prüfen. Der Code geht vom Bereich A1 bis A12 aus, prüft auf leere Zellen und schließt doppelte aus:
Private Sub UserForm_Activate()
Dim lngCounter As Long
For lngCounter = 1 To 12
If Not IsEmpty(Cells(lngCounter, 1).Value) Then
If WorksheetFunction.CountIf(Range(Cells(1, 1).Address, Cells(lngCounter, 1).Address), Cells(lngCounter, 1).Value) = 1 Then
ComboBox1.AddItem Cells(lngCounter, 1).Value
End If
End If
Next lngCounter
End Sub</font>

messias
22.02.2008, 16:59
Wie immer - vielen Dank !

b3njamin
08.01.2014, 10:31
Hallo Zusammen,

erstmal vielen Dank für diese Thema, es hat mir geholfen eine Lösung für mein Problem zu finden.

Jetzt habe ich noch eine Ergänzung dazu, da ich in der ComboBox zwei Spalten brauchte und das mit dem o.g. Code und Excel 2007 nicht möglich war.


Dim zeilenEnde As Long

'Letzte ZeilenNr. wird ausgewertet und "zeilenEnde" übergeben.
zeilenEnde = Sheets("Vorlagen").Range("B2").End(xlDown).Row

'Konfiguration und Übergabe der Daten an die ComboBox, die erste Zeile (Überschriften) aus der Tabelle wird nicht übertragen.
With ComboBox1
.ColumnCount = 2 'Die ComboBox erhält 2 Spalten für die Anzeige
.ColumnWidths = "1cm;10cm" '1 Spalte 1cm breit, 2. 10cm breit
.RowSource = "Vorlagen!A2:B" & zeilenEnde 'Übergabe der Tabellen Range an die ComboBox1
End With



Grüße
Benjamin