in der Datei https://www.herber.de/bbs/user/55655.xls habe ich in A1 einen Autofilter simuliert per Vba.
Tabellenblatt: C:\Dokumente und Einstellungen\IchalsAdministrator\Eigene Dateien\[ _
AutofilterDynamisch.xls]!Tabelle1
│ A │
──┼─────────┤
2 │ 1.10 │
──┼─────────┤
3 │ 1.10_01 │
──┼─────────┤
4 │ 1.10_02 │
──┼─────────┤
5 │ 1.10_03 │
──┼─────────┤
6 │ 1.11 │
──┼─────────┤
7 │ 1.11_01 │
──┼─────────┤
8 │ 1.11_02 │
──┴─────────┘
A2:A8
haben das Zahlenformat: Text
Gefiltert werden soll nach "1.10*" oder "1.11*", filtern nach "1.10*" klappt, aber nach Filtern nach "1.11" werden diese Zeilen angezeigt:
Tabellenblatt: C:\Dokumente und Einstellungen\IchalsAdministrator\Eigene Dateien\[ _
AutofilterDynamisch.xls]!Tabelle3
│ A │
──┼─────────┤
2 │ 1.10 │
──┼─────────┤
6 │ 1.11 │
──┼─────────┤
7 │ 1.11_01 │
──┼─────────┤
8 │ 1.11_02 │
──┴─────────┘
A2:A8
haben das Zahlenformat: Text
Der oberste Wert gehört da nicht hin, wo liegt der Fehler im Code?
Code ist nachstehend. Shapes(1) und 2 sind mit Makro belegte Bildchen vom blauen und schwarzen "normalem" Autofilter.
Danke ^ Gruß
Reinhard
Tabelle1
Private Sub ListBox1_Click()
ListBox1.Visible = False
Call Anzeige(ListBox1)
End Sub
Modul1
Option Explicit
Sub Auswahl()
Call Liste
ActiveSheet.ListBox1.Visible = True
End Sub
Sub Liste()
Dim colC As New Collection, Zei As Long, C As Long, Dummy As String
On Error Resume Next
'For Zei = 2 To Range("A" & Rows.Count).End(xlUp).Row 'klappt nicht
For Zei = 2 To Application.WorksheetFunction.CountA(Columns(1)) 'klappt
Dummy = Cells(Zei, 1)
If InStr(Dummy, "_") > 0 Then Dummy = Left(Cells(Zei, 1), InStr(Cells(Zei, 1), "_") - 1)
colC.Add key:=Dummy, Item:=Dummy
Next Zei
On Error GoTo 0
With ActiveSheet
.ListBox1.Clear
.ListBox1.AddItem "Alle"
For C = 1 To colC.Count
.ListBox1.AddItem colC(C)
Next C
End With
End Sub
Sub Anzeige(ByVal Was As String)
Dim Filter As String
Filter = IIf(Was = "Alle", "*", Was & "*")
Range("A1").AutoFilter Field:=1, Criteria1:=Filter, visibledropdown:=False
ActiveSheet.Shapes(1).Visible = Was = "Alle"
ActiveSheet.Shapes(2).Visible = Not (Was = "Alle")
End Sub