Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1292to1296
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

Autofilter setzen ohne .activate?

Autofilter setzen ohne .activate?
22.01.2013 13:43:45
Klaus
Hallo Leute,
ich habe ein kleines Tool, mit dem ich den Autofilter in einem Tabellenblatt zurück setze:
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

Das ganze rufe ich zB so auf:
Call DoResetAutofilter(sheets("Tabelle1"), 2, 4, 8)
(In Tabelle1, entferne den Autofilter, dann setze den Autofilter in den Bereich B8:Dxx wobei xx=letze Zeile)
das funktioniert auch gut, leider nur wenn Tabelle1 zufällig gerade aktiv ist!
Ich behelfe mir momentan mit einem .activate im Code um das ganze aufzurufen:
[Code]
dim wksOld as worksheet
wksOld = activesheet
sheets("Tabelle1").activate
Call DoResetAutofilter(sheets("Tabelle1"), 2, 4, 8)
wksOld.activate
[Code]

Nun die Frage: kann ich das ganze auch OHNE activate, select oder sonstiges realisieren, oder ist dies einer der 0,1% Fälle in denen es ohne activate nicht geht?
Grüße,
Klaus M.vdT.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter setzen ohne .activate?
22.01.2013 13:49:08
Daniel
Hi
du musst vor JEDEM Zellbezug (Range, Cells, Columns, Rows) das Tabellenblatt angeben.
Zellbezüge ohne Tabellenblattangabe beziehen sich immer auf das Aktive Blatt.
das gilt auch für Zellbezüge innerhalb von Funktionen wie Range()
in deinem Fall also (Punkte beachten, da innerhalb der WITH-Klammer:
.Range(.Cells(lRowFirst, iColFirst), .Cells(lRowLast, iColLast))
auch hier sollte man sich die Tabellenblattangabe vor dem Rows gönnen.
lRowLast = .Cells(.Rows.Count, iColFirst).End(xlUp).Row

das Problem könnte hier aktut werden, wenn Diagrammblätter vorhanden sein können oder mit alten xls- und neuen xlsx-Dateien gemischt gearbeitet wird.
Gruß Daniel

Anzeige
Wald und Bäume!
22.01.2013 13:53:48
Klaus
Hallo Daniel,
vielen vielen Dank für deine schnelle Rückmeldung. Da hab ich nicht korrekt referenziert ... wie peinlich, das hätte ich selbst sehen müssen!
Problem gelöst, Beitrag bitte löschen :-)
Grüße,
Klaus M.vdT.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige