Anzeige
Archiv - Navigation
1276to1280
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

Filtermakro arbeit nicht korrekt

Filtermakro arbeit nicht korrekt
Albert
Guten Morgen zusammen,
ich verwende folgendes Makro um bestimmte Filterergebnisse aus einer Liste zu löschen.
Funktionsweise: Ich schreibe z.B. GMR3 und alle Teilenummern mit GMR3 werden aus der Liste entfernt.
Funktioniert soweit. Nun gebe ich GMR7 ein und eine MsgBox sagt mir, dass diese Teilenummer nicht vorhanden ist. Wie kann das sein, wenn zig Einträge vorhanden sind?
Ich glaube nicht, dass es am Makro liegt... oder?
Sub Filtern()
Selection.AutoFilter
ActiveSheet.Range("A:H").AutoFilter Field:=2, Criteria1:="=" & TextBox1.Value & "*" _
, Operator:=xlAnd
iRowL = Cells.Find(what:="*", after:=Range("A1"), _
searchorder:=xlByRows, searchdirection:=xlPrevious).Row
For iRow = 2 To iRowL
If WorksheetFunction.CountA(Rows(iRow)) > 0 Then
If rng Is Nothing Then
Set rng = Rows(iRow)
Else
Set rng = Union(rng, Rows(iRow))
End If
End If
Next iRow
rng.Select
End 

Sub ()
Wäre euch für Tipps äußerst dankbar...
Viele Grüße
Albert

AW: Filtermakro arbeit nicht korrekt
06.09.2012 07:01:08
hary
Moin Albert
An dem Codeschnipsel liegt es nicht.
Wenn der Tabellenaufbau so ist:
Tabelle1
 ABC
1FilterFilterFilter
2  GMR3 
3  GMR4 
4  GMR5 
5  GMR6 
6  GMR7 
7  GMR3 
8  GMR7v 

Tabellendarstellung in Foren Version 5.30


wird auch GMR7 gefiltert und markiert.
Aber CountA ist doch immer groesser 0
Beschreib mal genau was du moechtest.
gruss hary

Anzeige
AW: Filtermakro arbeit nicht korrekt
06.09.2012 07:51:17
fcs
Hallo Albert,
in deinem Makro wird weder etwas gelöscht noch wird eine MsgBox angezeigt und den Sinn der For-Next-Schleife verstehe ich hier nicht.
Ich glaube nicht, dass es am Makro liegt... oder?
Es liegt ggf. schon am Makro. Wenn du in der Liste Zeilen gelöscht hast, dann hängt das Ergebnis des Filters davon ab, ob der Autofilter die ganze Zeit aktiv geblieben ist oder zum Zeitpunkt, wenn das Makro gestartet wird nicht mehr aktiv ist. Ist der Filter nicht mehr aktiv. dann wird mit
Selection.AutoFilter
ggf. nur der Bereich bis zur 1. Leerzeile in den Filterbereich aufgenommen.
Hat eine Liste Leerzeilen, dann muss beim aktivieren des Autofilters der Filterbereich explizit vorgegeben werden. Am besten prüft man den Autofilter-Status, schaltet den Autofilter ab und setzt ihn anschliessend anschließend neu für den gewünschten Zellbereich.
    With ActiveSheet
If .AutoFilterMode = True Then
If .FilterMode = True Then .ShowAllData
.AutoFilterMode = False
End If
End With
ActiveSheet.Range("A:H").AutoFilter Field:=2, Criteria1:="=" & TextBox1.Value & "*" _
, Operator:=xlAnd

Gruß
Franz

Anzeige
AW: Filtermakro arbeit nicht korrekt
06.09.2012 13:06:58
Albert
Hallo Franz,
anbei der ganze Code.
Private Sub CommandButton1_Click()
Dim rng As Range
Dim iRow As Integer, iRowL As Integer
'Ausschluss von Teilenummer starten
Sheets("Aufbereitung").Select
On Error GoTo Fehler
Selection.AutoFilter
ActiveSheet.Range("A:H").AutoFilter Field:=2, Criteria1:="=" & TextBox1.Value & "*" _
, Operator:=xlAnd
iRowL = Cells.Find(what:="*", after:=Range("A1"), _
searchorder:=xlByRows, searchdirection:=xlPrevious).Row
For iRow = 2 To iRowL
If WorksheetFunction.CountA(Rows(iRow)) > 0 Then
If rng Is Nothing Then
Set rng = Rows(iRow)
Else
Set rng = Union(rng, Rows(iRow))
End If
End If
Next iRow
rng.Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Delete shift:=xlUp
Selection.AutoFilter 'Filter aufheben
Rows("1:1").Select 'Filter aktivieren
Selection.AutoFilter
Range("A1").Select
TextBox1.Value = ""
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
TextBox1.SetFocus
Exit Sub
Fehler:
MsgBox "Artikelnummer nicht vorhanden!"
Selection.AutoFilter 'Filter aufheben
Rows("1:1").Select 'Filter aktivieren
Selection.AutoFilter
Range("A1").Select
TextBox1.Value = ""
TextBox1.SetFocus
End Sub
Mich verwundert eben, dass der Code gestern und vorgestern ordnungsgemäß funktioniert hat und heute eben nicht mehr.
Ich hab auch schon die Datenquelle geprüft, ob bei GMR7 noch ein Leerzeichen o.ä. mit drinnen ist. Leider nicht der Fall.
Viele Grüße
Albert

Anzeige
AW: Filtermakro arbeit nicht korrekt
06.09.2012 23:38:49
fcs
Hallo Albert,
das einzige was ich feststellen konnte unter Excel 2010:
Dein Code für den Commandbutton ist anfällig gegen leere Zeilen in der Liste.
Den Sinn der For-Next-Schleife mit Prüfung auf leere Zeilen verstehe ich immer noch nicht.
Ich würde den Code wie folgt gestalten.
Ansonsten müsstest du mal deine Datei mit Tabelle"Aufbereitung" mit anonymisierten Beispieldaten inklusive der Userform hochladen.
Teste aber vorher, ob der Fehler in deiner Beispieldatei dann auch auftritt.
Gruß
Franz
Private Sub CommandButton1_Click()
Dim iRow As Integer, iRowL As Integer
'Ausschluss von Teilenummer starten
If TextBox1.Value = "" Then
MsgBox "Es ist kein Suchbegriff eingegeben", vbInformation + vbOKOnly, _
"Prüfung Suchwerteingabe"
GoTo Fehler
End If
On Error GoTo Fehler
Sheets("Aufbereitung").Select
ActiveSheet.Range("A:H").AutoFilter Field:=2, _
Criteria1:="=" & TextBox1.Value & "*", _
Operator:=xlAnd
iRowL = Cells.Find(what:="*", after:=Range("A1"), _
searchorder:=xlByRows, searchdirection:=xlPrevious).Row
If iRowL = 1 Then
MsgBox "Artikelnummer nicht vorhanden!"
Range("A1").Select
Else
With ActiveSheet
.Range(.Rows(2), .Rows(iRowL)).SpecialCells(xlCellTypeVisible).Delete shift:=xlUp
End With
End If
ActiveSheet.ShowAllData
TextBox1.Value = ""
TextBox1.SetFocus
Fehler:
If Err.Number  0 Then
MsgBox "Fehler-Nr.: " & Err.Number & vbLf & Err.Description, vbInformation + vbOKOnly, _
"Fehler bei MAkroausführung Schaltfläche Commandbutton1"
End If
End Sub

Anzeige
AW: Filtermakro arbeit nicht korrekt
07.09.2012 08:55:54
Albert
Guten Morgen Franz,
hab deinen Code getestet und folgende Meldung erhalten...
Fehler-Nr. 9
Index außerhalb des gültigen Bereichs
Was könnte das bedeuten?
D&G
Albert

AW: Filtermakro arbeit nicht korrekt
07.09.2012 09:09:56
fcs
Hallo Albert,
prüfe den Blattnamen in
Sheets("Aufbereitung").Select
Ansonsten: Wenn die Prozedur immer im aktuellen Blatt suchen soll dann schmeiß die Zeile raus.
Zur Prüfung der genauen Fehlerzeile: setze nach dem Öffnen der Datei im Code am Beginn der Button-Prozedur einen Haltepunkt. Dann Userform starten. Wenn das Makro stoppt dann mit F8 langsam weiter machen, Dann erkennst du in welcher Zeile das Makro wegen Fehler zu der Fehler-Zeile springt.
Gruß
Franz
we

Anzeige
AW: Filtermakro arbeit nicht korrekt
10.09.2012 10:15:15
Albert
Servus Franz,
das Makro springt bei der Zeile
For iRow = 2 To iRowL
auf den Error-Handler Fehler.
Das versteh ich nicht. Bei anderen Versuchen klappt es auch, weshalb nun bei der einen Suche nicht.
D&G
Albert

AW: Filtermakro arbeit nicht korrekt
10.09.2012 16:04:49
fcs
Hallo Albrecht,
wenn hier ein Fehler auftritt, dann stimmt mit einer der beiden Variablen etwas nicht.
iRowL enthält einen Fehlerwert, der dann ein paar Zeilen oberhalb verursacht wird, oder ist mit einem ungeeigneten Variablentyp deklariert.
Typischer Weise sollt iRowL as Long oder Variant deklariert sein. Integer hat unter Excel 2007 ggf. einen zu kleinen Wertebereich.
Hilfreich wäre natürlich wenn du hier auch Fehler-Nr. und -beschreibung angeben würdest.
Alles weitere wäre nur in einer Beispieldatei abzuklären, in der der Fehler auftritt.
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige