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

Problem beim Filtern

Problem beim Filtern
19.10.2018 09:25:13
Peter
Hallo ihr Excelspezialisten,
ich versuche gerade ein Makro zu erstellen, zum Filtern einer Tabelle.
Der Bereich der Tabelle Worksheets("Tabelle3").range("B"9:F" & Cells(Rows.Count, 6).End(xlUp).Row).
Die nachfolgenden Makros sollen Filtern bzw. Filter aufheben. Filtern funktioniert nicht - Aufhebung funktioniert.
Könnt ihr mir bitte sagen, wo hier der Fehler steckt.
Sub Filtermakro2()
'für Datenfilterung
v1 = (Worksheets("Tabelle2").Range("J4").Value)
v2 = (Worksheets("Tabelle2").Range("J5").Value)
Worksheets("Tabelle3").Range("B9:F" & Cells(Rows.Count, 6).End(xlUp).Row).AutoFilter Field:=1,  _
Criteria1:=">=" & v1, Operator:=xlAnd, _
Criteria2:="

Sub Filter_aufheben()
Selection.AutoFilter Field:=1
Range("B10").Select
Selection.AutoFilter
End Sub
Besten Dank für eure Hilfe.
Gruss
Peter

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem beim Filtern
19.10.2018 10:24:54
UweD
Hallo
hier mal ein Tipp:

Set TB=Sheets("Tabelle1")
If TB.AutoFilterMode Then TB.AutoFilterMode = False ' Autofilter ausschalten
'oder
If TB.FilterMode Then TB.ShowAllData' Autofilter alle
LG UweD
AW: Problem beim Filtern
19.10.2018 10:52:03
Peter
Hallo Uwe,
leider Problem nicht behoben.
Habe jetzt nachstehenden Code:
'Option Explicit
Sub Filtermakro2a()
Dim Tb As Worksheet
'Dim v1 As Range
'Dim v2 As Range
'für Datenfilterung
Set Tb = Sheets("Tabelle3")
'If Tb.AutoFilterMode Then Tb.AutoFilterMode = False ' Autofilter ausschalten
If Tb.FilterMode Then Tb.ShowAllData ' Autofilter alle
v1 = Range("N2").Value
v2 = Range("N3").Value
Tb.Range("B9:F" & Cells(Rows.Count, 2).End(xlUp).Row).AutoFilter Field:=1, _
Criteria1:=">=" & v1, Operator:=xlAnd, _
Criteria2:="
Der Fehler ist in der letzten Zeile.
Ich habe einen Test gemacht, bei welchem ich das Jahr filter.
ActiveSheet.Range("$B$9:$G$51").AutoFilter Field:=1, Criteria1:= _
xlFilterThisYear, Operator:=xlFilterDynamic
Dieser Filter funktioniert.
Bei dieser Gelegenheit noch eine Frage - wie muss ich v1 und v2 deklarieren?
Gruss
Peter
Anzeige
AW: Problem beim Filtern
19.10.2018 11:08:27
UweD
Hallo
aus 'Criteria1:= xlFilterThisYear' entnehme ich, dass es sich bei v1 und v2 um "Datümer" handelt
2 Wege
Modul1
Option Explicit 
 
Sub Filtermakro2a() 
    Dim Tb As Worksheet 
    Dim v1 As Double 'in den Zellen steht zwar ein Datum, verglichen wird aber mit der fortlaufenden Zahl 
    Dim v2 As Double 
     
    'für Datenfilterung 
    Set Tb = Sheets("Tabelle3") 
     
    If Tb.AutoFilterMode Then Tb.AutoFilterMode = False ' Autofilter ausschalten 
     
    v1 = Tb.Range("N2").Value 
    v2 = Range("N3").Value 
     
    Tb.Range("B9:F" & Cells(Rows.Count, 2).End(xlUp).Row).AutoFilter Field:=1, _
        Criteria1:=">=" & v1, Operator:=xlAnd, _
        Criteria2:="<=" & v2 
 
End Sub 
 
oder ' 
 
Sub Filtermakro2b() 
    Dim Tb As Worksheet 
    Dim v1 As Date 
    Dim v2 As Date 
     
    'für Datenfilterung 
    Set Tb = Sheets("Tabelle3") 
     
    If Tb.AutoFilterMode Then Tb.AutoFilterMode = False ' Autofilter ausschalten 
     
    v1 = Tb.Range("N2").Value 
    v2 = Range("N3").Value 
     
    Tb.Range("B9:F" & Cells(Rows.Count, 2).End(xlUp).Row).AutoFilter Field:=1, _
        Criteria1:=">=" & CDbl(v1), Operator:=xlAnd, _
        Criteria2:="<=" & CDbl(v2) 
End Sub 
 
 
LG UweD
Anzeige
AW: Problem beim Filtern erledigt
19.10.2018 11:15:36
Peter
Hallo Uwe,
vielen Dank für Deine Hilfe. Es funktionieren beide einwandfrei.
Welches Makro würdest Du als das bessere verwenden?
Noch in diesem Zusammenhang ein weitere Frage.
Ist es möglich, dass dieses Makro auch verwendet werden kann um direkt eine Listbox zu filtern?
Gruss
Peter
AW: Problem beim Filtern erledigt
19.10.2018 11:19:38
UweD
Hi
&GT&GT Welches Makro würdest Du als das bessere verwenden?

2b


&GT&GT Ist es möglich, dass dieses Makro auch verwendet werden kann um direkt eine Listbox zu filtern?

was meinst du mit listbox?
AW: Problem beim Filtern erledigt
19.10.2018 11:24:47
Peter
Hallo Uwe,
ich möchte eine UF erstellen, bei welchem die Datum-Auswahl über TB erfolgt und dann die gefilterten Werte in der Listbox erscheinen.
Ebenso möchte ich dazu dann den Ausdruck für die gefilterten Werte erstellen.
Ziel ist es, ein Konto zu haben, welches mehrere Kriterien erfasst und z. B. mehrere Zeiträume einzeln auszudrucken.
Gruss
Peter
Anzeige
AW: Problem beim Filtern erledigt
19.10.2018 11:47:36
Peter
Hallo Uwe,
besten Dank für Deine freundliche Hilfe.
Dein Makro werde ich auf jeden Fall in einem bestimmten Bereich der Datei verwenden.
Da mir Daniel bereits erfolgreich bei der Erstellung einer Listbox behilflich war und er sich gemeldet hat, hoffe ich, dass er mir hier weiter helfen kann.
Vielleicht schaust auch Du Dir das Makro mal an.
Nochmals vielen Dank für Deine Hilfe.
Gruss
Peter
AW: Problem beim Filtern erledigt
19.10.2018 11:27:28
Daniel
HI
für das Erstellen einer Listbox würde ich nicht unbedingt den Autofilter verwenden.
enthält die Listbox nur eine oder wenige Spalten, würde ich mit einer Schleife über die Zeilen laufen und nur die benötigten Zeilen der Listbox hinzufügen.
(if Bedingung erfüllt Then Listbox1.AddItem Wert)
soll die Listbox viele Spalten aus der Tabelle enthalten, würde ich die Tabelle nach dem Datum sortieren (dh so, dass alle Zeilen, die in die Listbox sollen, einen lückenlosen Block bilden.
Dann Start- und Endzeile der zu übernehmenden Daten ermitteln und den Block als ganzes der Listbox übergeben
(Listbox1.List = Range(Cells(Startzeile, Startspalte), Cells(EndZeile, Endspalte)).Value)
Gruß Daniel
Anzeige
AW: Problem beim Filtern erledigt
19.10.2018 11:43:39
Peter
Hallo Daniel,
Du hast mir bereits bei der Erstellung einer UF-Listbox erfolgreich geholfen.
Jetzt würde ich gerne diese zum Filtern der Datumswerte verwenden.
Das nachstehende Makro wurde von Dir erstellt:
Private Sub userform_initialize()
Dim i As Long
Dim str, ii, arr, str2, maxlen, LC
maxlen = 35
With ListBox1
.Clear
.ColumnCount = 8                                  '8Spalten erforderlich für Zeilen
'      .ColumnWidths = "3cm;6cm;3cm;3cm;3cm;3cm"        'bei 6 Spalten werden alle 8 angezeigt
.ColumnWidths = "3cm;6cm;3cm;3cm;3cm;3cm;0cm;0cm" 'durch letzte beide 0cm werden die  _
beiden letzten Spalten ausgeblendet
For i = 9 To Cells(Rows.Count, "B").End(xlUp).Row
LI = i - 9
str = Cells(i, 3)
.AddItem
LC = .ListCount - 1
.List(LC, 0) = Cells(i, 2) 'SpalteA in  Spalte1
.List(LC, 1) = Cells(i, 3) 'Original-Text speichern
.List(LC, 2) = Cells(i, 4) 'SpalteD in dritte Spalte3
.List(LC, 3) = Format(Cells(i, 5), "#,###.00 €") 'SpalteE in dritte Spalte4
.List(LC, 4) = Format(Cells(i, 6), "#,###.00 €") 'SpalteF in dritte Spalte5
.List(LC, 5) = Format(Cells(i, 7), "#,###.00 €")  'SpalteG in dritte Spalte6
.List(LC, 6) = LI 'Zeilen-Nr speichern
.List(LC, 7) = Cells(i, 3) 'Original-Text speichern
str = Cells(i, 3)
If i > 9 Then
If str = "" Then str = " "
arr = Split(str, " ")
str2 = arr(0)
For ii = 1 To UBound(arr)
If Len(str2 & arr(ii)) + 1 

Hier möchte ich es gerne haben, dass bei Auswahl von TB Anfang-End-Datum die Listbox entsprechend gefüllt wird.
In einem späteren Prozess werden es jedoch 9 bis 11 Spalten sein. Das Problem ist jedoch bei AddItem ist bei 10 Spalten Schluss.
Aber dies ist heute nicht von Bedeutung.
Gruss
Peter
Anzeige
AW: Problem beim Filtern erledigt
19.10.2018 12:15:07
Daniel
Hi
naja, Prüfung in die Schleife einbauen, bevor du den Wert zu Listbox hinzufügst:
If Cells(i, Datumsspalte) >= Startdatum & Cells(i, Datumsspalte) 
gruß Daniel
AW: Problem beim Filtern erledigt
19.10.2018 12:42:38
Peter
Hallo Daniel,
besten Dank werde es prüfen, komme aber jetzt nicht dazu. Melde mich wieder.
Noch einen schönen Tag.
Gruss
peter
AW: Problem beim Filtern
20.10.2018 12:05:02
Peter
Hallo Daniel,
habe die Zeile nach str = Cells(i, 3) und vor .AddItem eingebaut und end if vor end with geht aber nicht.
Kannst Du mir bitte weiterhelfen.
Besten Dank
Gruss
Peter
AW: Problem beim Filtern erledigt
20.10.2018 16:45:01
Piet
Hallo Peter
wenn ich den Code von Daniel richtig verstehe, und du HIER eingegriffen hast, gehört End If nicht vor End With, sondern vor Next i. D.h. zwei End If direkt hintereinander!!
For i = 9 To Cells(Rows.Count, "B").End(xlUp).Row
LI = i - 9
str = Cells(i, 3)
'Hier vermutlich deine neue If Anweisung, ist das korrekt? Dann End If VOR Next i setzen!!
.AddItem
mfg Piet
Anzeige
AW: Problem beim Filtern
20.10.2018 17:34:01
Peter
Hallo Piet,
besten Dank für Deine Hilfe.
Das mit der Zeile und dem EndIf ist wohl richtig.
Es wird ordnungsgemäss aufgelistet aber nicht gefiltert.
Irgend etwas stimmt nicht mit Dim Startdatum as Double und Enddatum as Double oder innerhalb der
If Zeile.
Wenn ich Einzelschritt mache dann ist Startdatum und Enddatum ohne Punkte. In der Tabelle sind aber Punkte.
Muss ich vor Startdatum = UserForm3.TextBox1tbx_Startdatum
Enddatum = UserForm3.TextBox2 jeweils CDBl setzten? oder was ist sonst falsch?
Gruss
Peter
AW: Problem beim Filtern
21.10.2018 00:06:00
Piet
Hallo Peter
ich habe Dim Startdatum as Double und Enddatum as Double nicht gesehen!
Versuche mal sie bitte mal "As Date" zu deklarieren. Bin gespannt was dabei herauskommt?
mfg Piet
Anzeige
AW: Problem beim Filtern
21.10.2018 08:19:19
Peter
Hallo Piet,
es wird wie zuvor die Listbox gefüllt - aber nicht mit dem Datum von bis. Es wird alles angezeigt.
Gruss
Peter
Beispieldatei
21.10.2018 10:00:18
Werner
Hallo Peter,
wenn ich mir den Verlauf hier so anschaue, dann solltest du spätestens jetzt mal daran denken deine Mappe hier hoch zu laden. Alles andere wäre weiteres Stochern im Nebel.
Gruß Werner
AW: Beispieldatei anbei
21.10.2018 12:21:34
Werner
Hallo Peter,
was Grundsätzliches:
Bitte als erste Codezeile Option Explicit, so wirst du gezwungen alle Variablen zu Dim(ensionieren) und Excel meckert dich an, wenn du das nicht gemacht hast.
So wäre dir z.B. aufgefallen, dass die Variable str2 nicht Dim(ensioniert) war.
Bei den Dim der Variablen solltest du sauber arbeiten.
Dim i, o, l As Long

Hier ist nur die Variable l als Long dimensioniert, die Variablen i und o sind vom Typ Variant
Bitte so:
Dim i As Long, o As Long, l as Long
Hat aber nichts mit deinem Problem zu tun.
Problem:
Du holst dir das Datum zum Prüfen in der If- Schleife aus einer Textbox. In einer Textbox steht aber, wie der Name schon sagt Text. Deshalb kann der Vergleich mit deinen Datumswerten in den Zellen nicht funktionieren.
Der Text muss beim Übergeben in die Variablen erst in ein Datum gewandelt werden mit CDate.
Deine Zeilenbeschriftungen innerhalb der Listbox habe ich raus geschmissen. Die Spaltenbeschriftungen habe ich mit entsprechenden Labels, oberhalb dem Listboxfenster realisiert.
https://www.herber.de/bbs/user/124790.xlsm
Gruß Werner
Anzeige
AW: Beispieldatei funktioniert Super
21.10.2018 13:01:38
Peter
Hallo Werner,
fantastisch - funktioniert einwandfrei.
Vielen Dank für Deine Hilfe und noch einen schönen Sonntag.
Gruss
Peter
Gerne u. Danke für die Rückmeldung. o.w.T.
21.10.2018 13:14:11
Werner
AW: noch eine kleine Erweiterung
22.10.2018 11:31:55
Peter
Hallo Werner,
nochmals vielen Dank für Deine Hilfe.
Ich probiere schon seit geraumer Zeit, wie ich es erreichen kann, in diesen Code noch mit einzubringen, dass in drei hinzuzufügende Label oder TB die Summe der Spalte 4=Einnahmen und 5=Ausgaben und 7=Einnahmen ./. Ausgaben aufgelistet werden.
Kannst Du das bitte freundlicherweise noch für mich ergänzen.
Besten Dank
Gruss
Peter
AW: Danke habe die Lösung gefunden(owT)
22.10.2018 11:43:03
Peter
.
AW: noch ein Erweiterung
23.10.2018 12:01:57
Peter
Hallo Werner,
bei komplizierteren Codes stosse ich einfach auf gewisse Grenzen.
Ich hätte nun gerne noch einen zusätzlichen Button "Drucken", mit welchem ich diesen Text ausdrucken bzw. Druckvorschau durchführen kann.
Ich habe zwar einen Code im Archiv gefunden, dieser listet jedoch die Textzeilen der Spalte C nicht gesplittet auf sondern in voller Breite.
Besten Dank für Deine Hilfe.
Gruss
Peter
Anzeige
AW: Nachtrag zu letztem Eintrag
23.10.2018 12:11:48
Peter
Hallo Werner,
ist es möglich das Makro mit der Aufschlüsselung vom Orginal zu verwenden bei welchem der Text der spalte3 aufgeschlüsselt wird mit Deinem Datumfilter.
Das Problem sind die leeren Zellen.
Ist das ein grosses Problem oder kannst Du dies leicht lösen?
Besten Dank
Gruss
Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige