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

Wieso klappt Filter in UF nicht

Wieso klappt Filter in UF nicht
Kurt
Hallo zusammen,
habe folgendes Makro für das aufrufen der UF.
Leider klappt es nicht, wenn ich die Filterung durchführe, Wieso ?
Wenn ich nur sortiere wird alles eingelesen.
Habe die Tabelle eingesehen die Filterung sieht man dort, nur
halt wird die UF nicht neu angezeigt.
mfg Kurt P
Application.ScreenUpdating = False
Sheets("ALLE ").Select
Range("X22").Select
Range("A1:G1").Select
If ActiveSheet.AutoFilterMode Then
Selection.AutoFilter
End If
Dim z As Long
Range("A2").Select
z = Range("A2").End(xlDown).Row
ActiveSheet.Range(Cells(2, 1), Cells(z, 7)).Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
x = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row, 65536)
UFVKNamenSuchen.ListBox1.RowSource = "A2:A" & x
x = IIf(IsEmpty(Range("B65536")), Range("B65536").End(xlUp).Row, 65536)
UFVKNamenSuchen.ListBox2.RowSource = "B2:B" & x
x = IIf(IsEmpty(Range("G65536")), Range("G65536").End(xlUp).Row, 65536) UFVKNamenSuchen.ListBox3.RowSource = "G2:G" & x
x = IIf(IsEmpty(Range("C65536")), Range("C65536").End(xlUp).Row, 65536) UFVKNamenSuchen.ListBox4.RowSource = "C2:C" & x
x = IIf(IsEmpty(Range("E65536")), Range("E65536").End(xlUp).Row, 65536) UFVKNamenSuchen.ListBox5.RowSource = "E2:E" & x
'x = IIf(IsEmpty(Range("P65536")), Range("P65536").End(xlUp).Row, 65536)
' UFVKNamenSuchen.ListBox5.RowSource = "P2:P" & x
'x = IIf(IsEmpty(Range("Q65536")), Range("Q65536").End(xlUp).Row, 65536)
' UFVKNamenSuchen.ListBox6.RowSource = "Q2:Q" & x
'x = IIf(IsEmpty(Range("R65536")), Range("R65536").End(xlUp).Row, 65536)
' UFVKNamenSuchen.ListBox7.RowSource = "R2:R" & x
TextBox1.SetFocus
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Application.ScreenUpdating = True
End Sub
Dim ws As Worksheet
For Each ws In Worksheets
' ws.Protect userinterfaceonly:=True, Password:="kk"
ws.EnableAutoFilter = True 'ermöglicht Autofilter
' ws.EnableOutlining = True 'ermöglicht Gruppierung/Gliederung
Next ws
'-------------------------------------------
Range("A1:G1").Select
If Not ActiveSheet.AutoFilterMode Then
Selection.AutoFilter
End If
Range("G2").Select
Selection.AutoFilter Field:=3, Criteria1:="00"
Dim z As Long
Range("A2").Select
z = Range("A2").End(xlDown).Row
ActiveSheet.Range(Cells(2, 1), Cells(z, 7)).Select
'--- sortieren Aufsteigend -----------------
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ActiveSheet.Range("A2").Select
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Wieso klappt Filter in UF nicht
12.07.2010 19:35:28
Gerd
Hallo Peter,
was soll zu guter Letzt in den 5 Listboxen drinstehen?
Gruß Gerd
AW: Wieso klappt Filter in UF nicht
12.07.2010 19:37:14
Gerd
Sorry, Kurt, natuerlich. :-)
Gruß Gerd
die gefilterten daten
12.07.2010 19:44:43
walter
Guten Abend Gerd,
wenn die Daten ind der Tabelle gefiltert sind, sollen diese Daten
angezeigt werden, so als wenn ich die UF neu einlesen würde.
mfg kurt p
hatte was gefunden aber ...
12.07.2010 20:53:13
kurt
Hallo Gerd,,
habe dies gefunden:
Private Sub ListBox_einlesen()
Dim i
Dim sel
For i = 2 To 200
'If ListBox4.Selected(i) = True Then
'  MsgBox "bla"
'Me.ListBox1.ListIndex 1
'sel = Me.ListBox1.ListIndex + 1
'Me.ListBox2.ListIndex 1
''Me.ListBox2.ListIndex = sel - 1
'sel = Me.ListBox2.ListIndex + 1
'Me.ListBox3.ListIndex = sel - 1
'Me.ListBox4.ListIndex = sel - 1
'Me.ListBox5.ListIndex = sel - 1
'Me.ListBox6.ListIndex = sel - 1
'Me.ListBox7.ListIndex = sel - 1
'End If
Next
End Sub

komisch, habe alles auskommentiert, aber die 1. Spalte wird richtig eingelesen !
mfg kurt p
Anzeige
AW: die gefilterten daten
13.07.2010 04:32:37
fcs
Hallo Kurt,
wenn du aus einem Zellbereich nicht alle Daten in der Auswahlliste einer Listbox oder Combobox anzeigen möchtest, dann kannst du nicht mehr mit RowSource als Quelle für die Auswahliste arbeiten.
Die Eigenschaft RowSource muss dann leer bleiben und die Elemente der Auswahlliste müssen mit der AddItem-Methode erstellt werden, oder die Daten der Auswahlliste werden in zunächst in ein Daten-Array eingelesen und dann der List-Eigenschaft der Box zugewiesen.
In deinem Fall ist es wahrscheinlich am günstigsten nach dem Setzen des Autofilters die Hidden-Eigenschaft der Zeilen zu prüfen und die Daten der nicht ausgeblendeten Zeilen zunächst in ein Datenarray einzulesen und anschliessend die Listboxen mit den Daten zu füllen.
Gruß
Franz
Anzeige
AW: die gefilterten daten
13.07.2010 11:51:21
kurt
Hallo Franz,
danke für den Tip, allerdings kann ich das so nicht in mein Makro
umsetzen, da nicht so Kenntnisse vorhanden sind.
Es gibt es ein Beispiel ?
mfg Kurt P
AW: Wieso klappt Filter in UF nicht
13.07.2010 15:18:55
fcs
Hallo Kurt,
ungetestet müsste es etwa wie folgt aussehen.
Gruß
Franz

Sub aatest()
Application.ScreenUpdating = False
Sheets("ALLE ").Select
Range("X22").Select
Range("A1:G1").Select
If ActiveSheet.AutoFilterMode Then
Selection.AutoFilter
End If
Dim z As Long
Range("A2").Select
z = Range("A2").End(xlDown).Row
ActiveSheet.Range(Cells(2, 1), Cells(z, 7)).Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
TextBox1.SetFocus
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Application.ScreenUpdating = True
End Sub
Dim ws As Worksheet
For Each ws In Worksheets
' ws.Protect userinterfaceonly:=True, Password:="kk"
ws.EnableAutoFilter = True 'ermöglicht Autofilter
' ws.EnableOutlining = True 'ermöglicht Gruppierung/Gliederung
Next ws
Range("A1:G1").Select
If Not ActiveSheet.AutoFilterMode Then
Selection.AutoFilter
End If
Range("G2").Select
Selection.AutoFilter Field:=3, Criteria1:="00"
Dim z As Long
Range("A2").Select
z = Range("A2").End(xlDown).Row
ActiveSheet.Range(Cells(2, 1), Cells(z, 7)).Select
'--- sortieren Aufsteigend -----------------
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ActiveSheet.Range("A2").Select
'Listboxen mit Datenfüllen
Dim arrLB01(), arrLB02(), arrLB03(), arrLB04(), arrLB05()
Dim iIndex As Long
iIndex = -1
'Listen-Auswahldaten in Arrays einlesen
With ActiveSheet
For x = 2 To z
If .Rows(x).Hidden = False Then
iIndex = iIndex + 1
ReDim Preserve arrLB01(0 To Index)
ReDim Preserve arrLB02(0 To Index)
ReDim Preserve arrLB03(0 To Index)
ReDim Preserve arrLB04(0 To Index)
ReDim Preserve arrLB05(0 To Index)
arrLB01(Index) = .Cells(x, 1).Value 'Spalte A
arrLB02(Index) = .Cells(x, 2).Value 'Spalte B
arrLB03(Index) = .Cells(x, 7).Value 'Spalte G
arrLB04(Index) = .Cells(x, 3).Value 'Spalte C
arrLB05(Index) = .Cells(x, 5).Value 'Spalte E
End If
Next
End With
'Arraydaten den Listen zuweisen
With UFVKNamenSuchen
With .ListBox1
.RowSource = ""
.Clear
.List = arrLB01
End With
With .ListBox2
.RowSource = ""
.Clear
.List = arrLB02
End With
With .ListBox3
.RowSource = ""
.Clear
.List = arrLB03
End With
With .ListBox4
.RowSource = ""
.Clear
.List = arrLB04
End With
With .ListBox5
.RowSource = ""
.Clear
.List = arrLB05
End With
End With
End Sub

Anzeige
bleibt hier stehen...
13.07.2010 18:28:18
kurt
Guten Abend FRanz,
bleibt hier stehen:
.List = arrLB01
Fehlermeldung:
Laufzeitfehler 380
Eigenschaft List konnte nicht gesetzt werden.
Ungültiger Eigenschaftswert
mfg Kurt P
AW: bleibt hier stehen...
13.07.2010 20:39:47
fcs
Hallo Kurt,
wie geschrieben: Prozedur ungetestet, da ich keine Lust hatte dein Userform nachzubauen.
Problem1: Ich hatte einen Schreibfehler im Array-Indexzähler, dadurch wird nur die letzte Zeile im Array gespeichert.
Problem2: Wenn der Autofilter alle Zeilen ausblendet, werden alle leeren Zeilen bis zum Ende der Tabelle ins Array geladen.
Das hab ich jetzt bereinigt.
Der Fehler 380 tritt auf, wenn das Array ohne Daten bleibt, diese Tatsache wird jetzt zusätzlich geprüft.
Warum bei dir keine Daten eingelesen werden weiss ich nicht. Prüfe im Schrittmodus des Makros mal den Wert der Variablen z, wenn die For-Next-Schleife die Daten einliest. z sollte die Nummer der letzten sichtbaren Zeile im aktiven Blatt sein.
Gruß
Franz
'Listboxen mit Datenfüllen
Dim arrLB01(), arrLB02(), arrLB03(), arrLB04(), arrLB05()
Dim iIndex As Long
iIndex = -1
'Listen-Auswahldaten in Arrays einlesen
With ActiveSheet
If z = 0 Then 'Array enthält Daten
With UFVKNamenSuchen
With .ListBox1
.RowSource = ""
.Clear
.List = arrLB01
End With
With .ListBox2
.RowSource = ""
.Clear
.List = arrLB02
End With
With .ListBox3
.RowSource = ""
.Clear
.List = arrLB03
End With
With .ListBox4
.RowSource = ""
.Clear
.List = arrLB04
End With
With .ListBox5
.RowSource = ""
.Clear
.List = arrLB05
End With
End With
Else
MsgBox "Im aktiven Blatt wurden keine Daten gefunden!"
End If

Anzeige
Danke Franz! -)
14.07.2010 07:23:53
kurt
Guten Morgen Franz,
werde nachher alles testen, danke für die Unterstützung !!
mfg kurt p

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige