OT: Autofilter im Makro
25.02.2013 15:23:37
Klaus
Hi Steffen,
ich habe immer wieder das Problem, dass meine "dummen User" den Autofilter abschalten, versetzen oder sonstwas damit anstellen und somit den Makrodurchlauf behindern. Schon eine Filterung in einem beliebigem Feld vor Makrostart kann zu falschen Ergebnissen führen! Ich habe mir daher angewöhnt, den Autofilter im Laufe des Makros nochmal definitiv dahin zu setzen wo er hingehört (und alle alten Filterungen zu verwerfen). Code anbei:
Option Explicit
Sub CopyMe()
Dim wks1 As Worksheet
Dim wks2 As Worksheet
Application.ScreenUpdating = False
Set wks1 = Sheets("Tabelle2") 'Daten Tabelle ,Name anpassen
Set wks2 = Sheets("Tabelle3") 'Ausgabe Tabelle ,Name anpassen
With wks1
'Autofilter zurücksetzen
Call DoResetAutofilter(wks1, 1, 1, 1)
'setze Autofilter auf: wks1 / ab Spalte 1 / bis Spalte 1 / ab Zeile 2
'eventuell anpassen
'Daten in Spalte "A" ggf anpassen
.Columns("A").AutoFilter Field:=1, Criteria1:=""
' Beginn der Daten in Zelle "A2" ggf anpassen Ausgabe in _
Spalte A
.Range(.Range("A2"), .Range("A2").End(xlDown)).Copy wks2.Cells(wks2.Cells(wks2.Rows. _
Count, 1).End(xlUp).Row + 1, 1)
.AutoFilterMode = False
End With
Application.ScreenUpdating = True
Set wks1 = Nothing
Set wks2 = Nothing
End Sub
Sub DoResetAutofilter(wksMySheet As Worksheet, iColFirst As Integer, iColLast As Integer, _
lRowFirst As Long)
'* in case a user used another autofiler, this makro resets the autofilter to where needed.
Dim lRowLast As Long
With wksMySheet
lRowLast = .Cells(.Rows.Count, iColFirst).End(xlUp).Row
If .AutoFilterMode Then .Cells.AutoFilter 'Turns OFF Autofilter, if any
.Range(.Cells(lRowFirst, iColFirst), .Cells(lRowLast, iColLast)).AutoFilter 'Turns ON _
Autofilter on given range
End With
End Sub
Schadet nicht, hilf manchmal und dauert nur eine zehntel Sekunde.
Grüße,
Klaus M.vdT.