Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1112to1116
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 ansteuern in bestimmtem Sheet

Autofilter ansteuern in bestimmtem Sheet
Peter
Guten Tag
Ich möchte in einer Datei den Autofilter in der Tabelle "Report" verändern, wenn im Range "rID" (benannter Bereich) eine Eingabe erfolgt.
Ich kann den Autofilter jedoch nicht mit Sheets("Report" ... ansteuern. Wie funktioniert es?
Gruss, Peter
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("rID") Then
Sheets("Report").AutoFilter Field:=1, Criteria1:="="
End If
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Autofilter ansteuern in bestimmtem Sheet
04.11.2009 09:52:57
Björn
Hallo,
in welchem Sheet steht der Code?
Wahrscheinlich nicht in "Report", richtig?
Jeder Befehl, der über die eigene Tabelle hinausgeht, kann nicht in dieser stehen. Das funktioniert nicht.
Du musst den Befehl in ein Makro schreiben, das in einem Modul steht und dann dieses über deine Worksheet_Change aufrufen, dann funktioniert es.
Aber so kleine Bemerkung am Rande.
Möchtest du wirklich jedes Mal, wenn was in dem einen Blatt was geändert, in einem anderen Sheet den Autofilter setzen?
Das macht doch gar keinen Sinn, Du setzt in ja immer gleich (also keine variable Bedingung). Das reicht doch dann einmal. Bau mal eine Msgbox mit ein, dann siehst du, wie oft dieser Code wirklich aufgerufen wird.
Gruß
Björn
Anzeige
@Björn: Gegenbeispiel
04.11.2009 09:59:13
Erich
Hi Björn,
"Jeder Befehl, der über die eigene Tabelle hinausgeht, kann nicht in dieser stehen. Das funktioniert nicht."
Das glaube ich nicht. Teste es einfach mal

Sub tst()    ' im Modul von Tabelle1
MsgBox Name
Sheets("Tabelle2").Cells(1, 1) = "geht doch: " & Time
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
stimmt
04.11.2009 10:09:24
Björn
Hallo Erich,
stimmt. Ging das schon immer?
Ich hatte da auch schon ein paar Mal Problem zu Beginn meiner VBA-Karriere.
Dann meine ich das mal wo gelesen zu haben und wenn ich dann den entsprechenden Code in einem Modul hatte, dann funktionierte es.
Dann muss ja aber auch der Code von Peter funktionieren...
Dann verstehe ich den Fehler nicht.
Gruß
Björn B.
Anzeige
Referenzierungsfehler
04.11.2009 10:24:42
Erich
Hi Björn,
ja, das ging schn (naja) immer.
Die unvollständige/falsche Referenzierung von Bereichen war und ist ein weit verbreiteter Fehler.
In Tabellenblatt-Klassenmodulen ist Cells(1,1) die Zelle A1 der Tabelle, in der der Code steht.
In "nomalen" Modulen ist Cells(1,1) die Zelle A1 der (zufällig) gerade aktiven Tabelle.
In Tabellenblatt-Klassenmodulen des Sheets(1) ist
"Sheets(2).Range(Cells(1,1), Cells(2,2))" Unfug:
Der Bereich soll zu Sheets(2) gehören, Cells(1,1) und Cells(2,2) sind aber aus Sheets(1). Rumms!
Warum Peters Code nicht lief, ist ja jetzt klar. (Deine Verkürzung hatte ich auch schon gepostet.)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Autofilter ansteuern in bestimmtem Sheet
04.11.2009 10:05:05
Peter
Hallo Björn
Der Code steht wirklich im Tabellenblatt "Report" (genau so geschrieben ...).
Gruss, Peter
Blattname ist hier unnötig
04.11.2009 10:12:36
Erich
Hi Peter,
den Blattnamen brauchst du überhaupt nicht anzugeben, wenn der Code im Modul des Blattes steht.
Das hier geht dann alles:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("rID") Then
Cells.AutoFilter Field:=1, Criteria1:="="
UsedRange.AutoFilter Field:=1, Criteria1:="="
Me.Cells.AutoFilter Field:=1, Criteria1:="="
Me.UsedRange.AutoFilter Field:=1, Criteria1:="="
End If
End Sub
Der Klarheit halber würde ich dir die Varianten mit "Me." empfehlen.
Den Bereich kannst du natürlich auch irgendwie anders angeben.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
ok. Danke !! owT
04.11.2009 10:14:53
Peter
Autofilter ist Range-Eigenschaft
04.11.2009 10:07:36
Erich
Hi Peter,
AutoFilter ist keine Eigenschaft von Worksheet, sondern von Range(-Auflistung) - sagt auch die VBA-Hilfe.
Probier mal

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("rID") Then
'       Me.UsedRange.AutoFilter Field:=1, Criteria1:="="  ' nur zum Test
Sheets("Report").Cells.AutoFilter Field:=1, Criteria1:="="
End If
End Sub
Also zusätzlich einen Bereich angeben (z. B. mit .Cells oder .UsedRange)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Autofilter ist Range-Eigenschaft
04.11.2009 10:10:17
Peter
Hallo Erich
Vielen Dank. So funktioniert's.
Gruss, Peter
Anzeige
stimmt auch!
04.11.2009 10:14:21
Björn
Oh je, was ist denn mit mir heute los...
Schande über mich!
Natürlich hat hier Range gefehlt. Danke Erich!
Man (also ich) sollte einfach etwas genauer lesen. Sorry für meine Unwissenheit.
Aber eine kleine Verkürzung hätte ich wenigstens noch anzubieten.
Wenn der Code im Sheet "Report" steht, dann braucht das nicht nochmal referenziert zu werden.
Es kann also direkt die Range angesprochen werden, z.B:
Range("A1").Autofilter Field:=1, Criteria1:="="
Gruß
Björn

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige