Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1568to1572
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

Combobox

Combobox
27.07.2017 08:58:56
kurt
Guten Morgen,
ich habe eine UF mit ListBox und ComboBox.
in der UF:
Dim LoLetzte2 As Long
Dim lngI As Long
LoLetzte2 = Sheets(sBlattname).Cells(Rows.Count, 1).End(xlUp).Row
Me.ListBox1.RowSource = sBlattname & "!A3:N" & LoLetzte2
ComboBox1.AddItem "Alle anzeigen"
For lngI = 0 To ListBox1.ListCount
ComboBox1.AddItem ListBox1.Column(2, lngI)
Next
ComboBox1.ListIndex = 0
Hier das Makro:

Private Sub ComboBox1_Change()
Dim LoLetzte1 As Long
'LoLetzte1 = Sheets("Datenbank").Cells(Rows.Count, 1).End(xlUp).Row
If ComboBox1.ListIndex > 0 Then
Me.ListBox1.RowSource = "Häuser" & "!A" & ComboBox1.ListIndex + 2 & ":N" & ComboBox1. _
ListIndex + 2
ActiveSheet.Range("O1") = ComboBox1.ListIndex
ActiveSheet.Range("$A$2:$N$65000").AutoFilter Field:=1, Criteria1:=ActiveSheet.Range("O1")   _
_
'"mg1"
Else
'MsgBox "ww"
If ActiveSheet.AutoFilterMode Then
Selection.AutoFilter
End If
Call UserForm_Activate
End If
End Sub

Ich möchte gern das die Spalte "B" gefiltert wird, krieg es nicht hin,
WARUM ?
gruß
philipp b

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox
27.07.2017 09:38:42
Daniel
Hi
der Autofilter ist dem RowSource egal.
Es wird immer alles angezeigt.
du müsstest das so machen:
befülle die Listbox nicht über .RowSource, sondern schreibe die Werte direkt in die Listbox:
listbox1.List = Sheets(sBlattname).Range("A3:N" & LoLetzte2).Value
gehe dann mit einer Schleife über die Listbox und entferne mit .RemoveItem alle nicht benötigten Zeilen.
die Schleife muss rückwärts vom letzten Element zum ersten laufen.
das Filterkriterium sollte in der Listbox vorhanden sein:
for i = Listbox1.Listcount - 1 to 0 step - 1
if Listbox1.list(i, ?)  "?" then Listbox1.RemoveItem i
Next
Gruß Daniel
Anzeige
Leider Fehlermeldung
27.07.2017 18:42:56
philipp
Hallo Daniel.
Laufzeitfehler, nicht näher bezeichneter Fehler.
Private Sub ComboBox1_Change()
Dim LoLetzte1 As Long
Dim i
For i = Me.ListBox1.ListCount - 1 To 0 Step -1
If Me.ListBox1.List(i, 2) "*" Then Me.ListBox1.RemoveItem i
Next
blieb da stehen, was ich Fett gemacht habe
Exit Sub
gruß
philipp b
keine Fehlermeldung aber es wird nicht eingelesen
27.07.2017 19:12:17
philipp
Hallo Daniel,
keine Fehlermeldung aber es wird nicht in der Listbox eingelesen obwohl die Tabelle die
Daten entsprechend der Auswahl anzeigt.
Dim LoLetzte1 As Long
If ComboBox1.ListIndex > 0 Then
ActiveSheet.Range("$A$2:$N$193").AutoFilter Field:=2, Criteria1:="Mg1"
Dim i
For i = Me.ListBox1.ListCount - 1 To 0 Step -1
If Me.ListBox1.List(i, 2) <> "*" Then Me.ListBox1.RemoveItem i
Next
Else
If ActiveSheet.AutoFilterMode Then
Selection.AutoFilter
End If
Call UserForm_Activate
End If
End Sub
gruß
philipp b
Anzeige
AW: keine Fehlermeldung aber es wird nicht eingelesen
27.07.2017 19:27:05
Daniel
Hi
wenn du in der Schleife und im Autofilter unterschiedliche Filterkriterien verwendest, dann darfst du dich nicht über unterschiedliche Ergebnisse wundern.
Wenn du nach "Mg1" filterst, musst du in der Listbox auch diesen Text verwenden.
Ist doch irgendwie logisch, oder ?
weiterhin musst du beachten, dass in der Listbox die Zeilen- und Spaltenindizes bei 0 beginnen und nicht bei 1 wie in der Tabelle.
dh die Spalte B hat in der Listbox den Index 1.
also wenn, dann so:
Listbox1.List = ActiveSheet.Range("$A$3:$N$193").value
for i = Listbox1.ListCount - 1 to 0 Step - 1
if Listbox1.List(i, 1)  "Mg1" Then Listbox1.RemoveItem i
Next
Gruß Daniel
Anzeige
Ich glaube ich habe einen Fehler gemacht...
27.07.2017 19:47:38
philipp
Hallo Daniel,
SORRY !
Ich möchte mit der Combibox1 nach der Spalte 2(B) suchen.
Daher sollte in der CombiBox die Texte der Spalte B aufgelistet werden.
Wenn ich zum Beispiel: nach mg1 suche sollen 5 in der Listbox aufgeführt werden und natürlich
auch in der Tabelle nur diese gefiltert sein.
3 Mg1 Mg1-W1 Wohnung 1 Erdgeschoß 3 Zkdb
4 mg1 mg1-w2 Wohnung 2 1 Etage 3 ZKDB
5 mg1 mg1-w3 Wohnung 3 2 Etage 3 ZKDB
6 mg1 mg1-w4 Wohnung 4 Dachgeschoß 2 ZKDB
7 mg1 mg1-w5 Büro-Fläche Büro-Fläche 2 Z Küche WC
entschuldige für die unklare Info !
gruß
philipp b
Anzeige
Jetzt klappt es bis auf...
27.07.2017 20:35:15
philipp
Hallo Daniel,
jetzt klappt es, bis auf: Wenn Auswahl "Alle anzeigen" in der ComboBox auswähle
werden die Daten in die Listbox nicht eingelesen und auch in der Tabelle wird
nicht der Filter rausgenommen.
Private Sub ComboBox1_Change()
Dim LoLetzte2 As Long
Dim LoLetzte1 As Long
Dim i
Dim lngI As Long
'ListBox1.List = ActiveSheet.Range("$A$3:$N$").Value
'Me.ListBox1.List = ActiveSheet.Range("A3:N").Value ' neu daniel
ActiveSheet.Range("$A$2:$N$2").AutoFilter Field:=2, Criteria1:=ComboBox1.Text '"*", VisibleDropDown:=False
ListBox1.List = ActiveSheet.Range("A3:N200").Value ' neu daniel
For i = ListBox1.ListCount - 1 To 0 Step -1
If ListBox1.List(i, 1) ComboBox1.Text Then ListBox1.RemoveItem i
Next
If ComboBox1.ListIndex "" Then
ComboBox1.AddItem "Alle anzeigen"
For lngI = 0 To ListBox1.ListCount
ComboBox1.AddItem ListBox1.Column(1, lngI)
Next
End If
Exit Sub
gruß
philipp b
Anzeige
Habe Lösung gefunden -) DANKE Daniel !
27.07.2017 20:55:32
philipp
Hallo Daniel,
egal wie aber so klappt es !!!
Private Sub ComboBox1_Change()
Dim LoLetzte2 As Long
Dim LoLetzte1 As Long
Dim i
Dim lngI As Long
ActiveSheet.Range("$A$2:$N$2").AutoFilter Field:=2, Criteria1:=ComboBox1.Text '"*", VisibleDropDown:=False
ListBox1.List = ActiveSheet.Range("A3:N200").Value ' neu daniel
For i = ListBox1.ListCount - 1 To 0 Step -1
If ListBox1.List(i, 1) ComboBox1.Text Then ListBox1.RemoveItem i
Next
If ComboBox1.ListIndex = 0 Then
ActiveSheet.Range("$A$2:$N$2").AutoFilter Field:=2
If ActiveSheet.AutoFilterMode Then
Selection.AutoFilter
End If
Call UserForm_Activate
End If
Exit Sub
Übrings entschuldige hatte in der 1. Anfrage den Namen von meinem Bruder drin !
Sorry
gruß philipp b
Anzeige
Anbei das funktionierende Makro DANKE Daniel !
27.07.2017 21:29:42
philipp
Hallo Daniel,
habe gerade festgestellt das ich Dir das falsche Makro gesendet habe.
Das Makro funktioniert !
Private Sub ComboBox1_Change()
Dim LoLetzte2 As Long
Dim LoLetzte1 As Long
Dim i
Dim lngI As Long
ActiveSheet.Range("$A$2:$N$2").AutoFilter Field:=2, Criteria1:=ComboBox1.Text
'"*", VisibleDropDown:=False
ListBox1.List = ActiveSheet.Range("A3:N200").Value ' neu daniel
For i = ListBox1.ListCount - 1 To 0 Step -1
If ListBox1.List(i, 1) ComboBox1.Text Then ListBox1.RemoveItem i
Next
If ComboBox1.ListIndex = 0 Then
ActiveSheet.Range("$A$2:$N$2").AutoFilter Field:=2
If ActiveSheet.AutoFilterMode Then
Selection.AutoFilter
End If
Call UserForm_Activate
End If
Exit Sub
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige