Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[VBA] ListBox mit Autofilter-Werten befüllen
#1
Hallo zusammen,

ich habe einen Autofilter:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next

If Target.Column = 8 And Target.Row = 1 Then
If Target.Value <> "" Then
Worksheets("RegionFilter").Range("A1").AutoFilter , FIELD:=1, Criteria1:=Range("H1")
Else
FilterAufheben
End If
End If
End Sub

Nun würde ich gern meine Listbox mit den jeweils gefilterten Werten anzeigen lassen.
Code:
Private Sub TextBox1_Change()
Dim i As Long
Dim j As Long
Dim a As Long
a = Len(TextBox1)
ListBox1.Clear
With Worksheets("RegionFilter")
For i = 2 To .UsedRange.Rows.Count
    For j = 1 To Len(.Cells(i, 2)) - a + 1
        If UCase(Mid(.Cells(i, 2), j, a)) = UCase(TextBox1) Then
            ListBox1.AddItem (.Cells(i, 2))
            Exit For
        End If
    Next j
Next i
End With
End Sub

Private Sub UserForm_Initialize()
Start.Range("Hotelauswahl").Value = ""
Dim i As Long
With Worksheets("RegionFilter")
For i = 1 To .UsedRange.Rows.Count
ListBox1.AddItem (.Cells(i, 2))
Next
TextBox1 = " "
TextBox1 = ""
End With
End Sub
So zeigt er mir aber natürlich ständig die komplette Liste an ... 

Mag jemand helfen?

Grüße
Antworten Top
#2
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.address="$H$1" and target<>"" then  
    with sheets("RegionFilter").columns(1)
      .autofilter
      .copy cells(1,100)
      .autofilter
    end with

    Listbox1.List=cells(1,100).currentregion.value
    cells(1,100).currentregion.clearcontents
  End if
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#3
Hallo

ohne mich jetzt allzutief in die Details zu versteigen, müsste eigentlich folgende kleine Ergänzung dein Problem lösen:

Diese Zeile gibt's schon:
 ListBox1.AddItem (.Cells(i, 2))

Ändern in
  if .rows(i).hidden=false then ListBox1.AddItem (.Cells(i, 2))

vg, MM
Antworten Top
#4
mmat,

funktioniert super!!

Merci
Antworten Top
#5
Zum Füllen einer Listbox/Combobox, verzichte auf additem.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
Hi snb,


ok... kannst du mir sagen warum?

Grüße
Antworten Top
#7
Ist viel zu langsam!
Das mag bei 20 Einträgen unerheblich sein, aber seit ich snbs Varianten kenne, bin ich diesbezüglich sein Fan.  Angel
http://www.snb-vba.eu/VBA_Fill_combobox_listbox_en.html

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
puhh.. 

klingt interessant. Muss ich erstmal durchsteigen, wie ich das für meine Formeln anpasse..  Huh
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste