Wie Excel Autofilter-Eingabemaske per Makro öffnen

Hallo,
ich setze mit diesem Makro ein Datumsintervall im Autofilter (Excel 2002):

Sub Datumsintervall_setzen()

With ActiveSheet
If .AutoFilterMode And .FilterMode Then .ShowAllData
End With
Selection.AutoFilter Field:=8, Criteria1:=">=", Operator:=xlAnd, _
Criteria2:="

Mein Problem: Nach dem Ausführen des Makros bleibt das
Autofilter-Eingabefeld nicht geöffnet. Wie kann ich das Makro
so verändern, dass es nach dem Ausführen so aussieht:
http://img405.imageshack.us/i/unbenanntsnk.jpg/
und ich das Datum nach dem Ausführen des Makros in die
Datumsfelder eingeben kann?

Hallo Mara,

m.E. mußt du das Makro gewaltig verändern.

Das was du als Autofilter-Eingabefeld bezeichnet ist für Excel ein Dialogfeld.
Eine Liste der eingebauten Dialogfelder/dialogfenster findest du wenn du in der Vba-Hilfe nach „Show“ oder/und „Dialog“ suchst, dann stößt du auf einen Link im Hilfetext zu
„Liste der integrierten Dialogfeldargumente“

Und da konnte ich unter den Dialogfeldkonstanten nichts entdecken was dem gewünschten Dialogfeld entspricht.

kannst es gerne auf anderem Weg verifizieren.

Alle Konstanten die du da in der Liste der dialogfeldkonstanten siehst wie z.B. xlDialogActivate entsprechen einer Zahl.
xlDialogActivate ist z.B. 103
Also lass dir mal alle Dialoge nacheinander anzeigen:

Sub ZeigeDialog()
Dim N
On Error Resume Next
For N = 1 To 300
 Application.Dialogs(N).Show
Next N
End Sub

Du müßtest halt dieses Dialogfeld nachbauen mit einer Userform.

Gruß
Reinhard

Warum funktioniert Application.ExecuteExcel4Macro
eigentlich nur mit Texten?
Hallo,
ich habe deine Hinweise ein bißchen gegoogelt und bin auf den Befehl:
Application.ExecuteExcel4Macro „FILTER?(2)“
gestoßen. Mit dem klappt meine Dialogbox Autofilter auf, die funktioniert aber leider nur, wenn ich in der Spalte 2 einen Texteintrag auswähle. Wenn ich eine Zahl wähle (oder ein Datum), wird nichts angezeigt. Das klappt erst, wenn ich in Spalte 2 zuerst einen Texteintrag und dann eine Zahl wähle.
Das verstehe ich nicht.

Application.ExecuteExcel4Macro „FILTER?(2)“
gestoßen. Mit dem klappt meine Dialogbox Autofilter auf, die
funktioniert aber leider nur, wenn ich in der Spalte 2 einen
Texteintrag auswähle. Wenn ich eine Zahl wähle (oder ein
Datum), wird nichts angezeigt. Das klappt erst, wenn ich in
Spalte 2 zuerst einen Texteintrag und dann eine Zahl wähle.
Das verstehe ich nicht.

Hallo Mara,

kann ich nicht nachvollziehen mit der Zahl. das klappt bei mir genauso wie mit Texten.
Datümer sind was Spezielles. in den Zellen steht nur der datumswert als fortlaufende Zahl seit 1900.

Wenn man manuell über das Pfeilsymbol–bentzerdefiniert vorgeht kann man dort dann unter den Datümern in der Spalte wählen.
Dann klappt das auch mit dem gewählten Datum.

Macht man aber das Gleiche in der durch Excel4 erstellten Dialogbox klappt es bei gewählten Datümern nicht.
Abhilfe kenne ich da auch keine.

Auch die Eingabe von
Datwert(„02.01.2011“)
bzw.
=Datwert(„02.01.2011“)

hilft nichts.

Warum eigentlich willst du dieses Dialogfeld nicht über das Pfeilsymbol erzeugen?

Anscheinend ist „Filter?“ und „Filter“ das Gleiche, Syntax:

FILTER(Feld; Kriterien1; Operator; Kriterien2)

Feld ist klar, ist die Nummer der Spalte, 1 ist die linke.

Kriteria ist halt sowas
„>=“
„>2“

Operator ist 1 bei „UND“, 2 bei „ODER“

Hier paar Codes, da wo ich die datumszahl 40545 anstelle von 2.1.2011 benutze funktioniert die Filterung, setze ich 2.1.2011 ein wird nicht gefiltert, genauer die Ergebnisliste ist leer weil alles weggefiltert wurde.:

Sub tt()
'Application.ExecuteExcel4Macro „FILTER?(3,“">=02.01.2011"",1,""=40545"",1,""="",1,""

vielleicht hat noch jemand einen Tip für mich…
Hallo Reinhard,
manches ist wirklich schwer zu verstehen. Z.B. dass es mit Makrorecorder ganz einfach ist, mein gewünschtes Autofilter-Makro zu erzeugen (auch mit vorgegebenen Datumsintervall), außer dass es das Dialogfeld nachher leider schließt. Und es so schwierig ist, das zu ändern. Ich habe ja auch vor diesem Posting schon länger im Netz gesucht und nichts gefunden. Dabei dürfte das doch ein häufiges Problem sein. Nach deiner ersten Antwort bin ich auch auf US-Foren gestoßen mit ähnlichen Fragen, aber ohne zufriedenstellende Antwort.

kann ich nicht nachvollziehen mit der Zahl. das klappt bei mir
genauso wie mit Texten.

Geht bei mir mit Application.ExecuteExcel4Macro „FILTER?(2)“ nicht, auf 2 Computern einer mit Excel 2002 und einer mit Excel XP, wähle ich eine Zahl, zeigt er nur leere Zeilen.

Datümer sind was Spezielles. in den Zellen steht nur der
datumswert als fortlaufende Zahl seit 1900.

Datum geht auch leider nicht, außerdem kommt da nur die fortlaufende Zahl, und ich möchte ein Datum so eintippen: z.B. 1-1 für den 01.01.2011

Wenn man manuell über das Pfeilsymbol–bentzerdefiniert
vorgeht kann man dort dann unter den Datümern in der Spalte
wählen.
Dann klappt das auch mit dem gewählten Datum.

Das mache ich, da ich den Autofilter aber sehr häufig benutze und Datumsintervalle nicht nur verändere, sondern häufig neu anlege, wäre es eine Erleichterung ohne den Umweg und das Zielen auf den Pfeil.

Mit einer Userform hättest du diese Problematiken nicht mehr.

Weiß halt nicht, ob sich das für mich lohnt und ich kenne mich nicht mit VBA aus. Aber so ist es ja immer, man weiß vorher nie, wielange es dauert und ob der Aufwand zum Erfolg führt.

(Naja, vielleicht dann andere, ich weiß ja nicht genau was du
planst im Gesamtablauf)

Genau, vielleicht hat hier noch jemand einen Tip.
Vielen Dank.

Grüezi Mara

ich setze mit diesem Makro ein Datumsintervall im Autofilter
(Excel 2002):

Sub Datumsintervall_setzen()

With ActiveSheet
If .AutoFilterMode And .FilterMode Then .ShowAllData
End With
Selection.AutoFilter Field:=8, Criteria1:=">=",
Operator:=xlAnd, _
Criteria2:="

Mit einer Userform hättest du diese Problematiken nicht mehr.

Weiß halt nicht, ob sich das für mich lohnt und ich kenne mich
nicht mit VBA aus. Aber so ist es ja immer, man weiß vorher
nie, wielange es dauert und ob der Aufwand zum Erfolg führt.

Hallo Mara,

du willst den Filterdialog längere zeit offen ahben um ab und zu neu zu filtern?
Während der Dialog sichtbar ist kannst du aber nichts in anderen Zellen oder Blättern tun.

Auch das fällt weg bei einer Userform (UF). Da kann die UF sichtbar bleiben und du kannst trotzdem in den Zellen/Blättern weiterarbeiten.

Hier mal ein funktionierendes Beispiel. Klar müßte es noch verbessert werden, soll ja erst mal zeigen wie das aussehen könnte:

http://www.file-upload.net/download-3424918/kwMara.x…

Gruß
Reinhard

Danke für den Tip

Ich würde als Alternative die gewünschten Datumswerte für den
Intervall in zwei Zellen schreiben und diese mit dem Makro
verbinden, sodass sich dieses die Werte aus den Zellen holt.

Damit hast Du dann das Beste aus ‚beiden Welten‘ kombiniert,
wie ich finde.

Ja, das ist sogar besser als was ich vorhatte und diesmal funktioniert es auch. Ich habe einfach ein Makro aus dem Internet kopiert und etwas umgemodelt mit folgendem Ergebnis:

Sub Datumsintervall_setzen()

Dim Auswahl As String, Auswahl1 As String

Auswahl = CStr(CLng(Range(„h1“).Value))
Auswahl1 = CStr(CLng(Range(„i1“).Value))

ActiveSheet.Range("$h$2:blush:h$60000").AutoFilter Field:=8, Criteria1:= _
„>=“ & Auswahl, Operator:=xlAnd, Criteria2:="

Grüezi Mara

Ja, das ist sogar besser als was ich vorhatte und diesmal
funktioniert es auch. Ich habe einfach ein Makro aus dem
Internet kopiert und etwas umgemodelt mit folgendem Ergebnis:

Sub Datumsintervall_setzen()

Dim Auswahl As String, Auswahl1 As String

Auswahl = CStr(CLng(Range(„h1“).Value))
Auswahl1 = CStr(CLng(Range(„i1“).Value))

ActiveSheet.Range("$h$2:blush:h$60000").AutoFilter Field:=8,
Criteria1:= _
„>=“ & Auswahl, Operator:=xlAnd, Criteria2:="

Danke, hat geklappt
Hallo Thomas Ramel,

Dazu musst Du nur deinen Code ins Worksheet_Change()-Ereignis
des Tabellenblattes einbauen.

dazu habe ich im Visual-Basic-Editor die Datei, in der mein Autofilter steht und dort „Tabelle1“ ausgewählt und folgendes reinkopiert:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub
If Target.Address = „$H$1“ Then
Application.Run „Personl.xls!Datumsintervall_setzen“

ElseIf Target.Address = „$I$1“ Then
Application.Run „Personl.xls!Datumsintervall_setzen“

End If

End Sub

Damit wird mein Makro „Datumsintervall_setzen“ jeweils neu ausgeführt, wenn das Datumsintervall in Zelle H1 und/oder I1 geändert wird und so habe ich die optimale Lösung.
Vielen Dank

Grüezi Mara

Dazu musst Du nur deinen Code ins Worksheet_Change()-Ereignis
des Tabellenblattes einbauen.

dazu habe ich im Visual-Basic-Editor die Datei, in der mein
Autofilter steht und dort „Tabelle1“ ausgewählt und folgendes
reinkopiert:

Perfekt - so stelle ich mir die Unterstützung und Zusammenarbeit in Foren vor!
Nach Anregungen hast Du selbst weiter gemacht und für dich eine Läsung gefunden, die Du hier dann präsentierst - wirklich vorbildlich!

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub
If Target.Address = „$H$1“ Then
Application.Run „Personl.xls!Datumsintervall_setzen“
ElseIf Target.Address = „$I$1“ Then
Application.Run „Personl.xls!Datumsintervall_setzen“
End If

End Sub

Damit wird mein Makro „Datumsintervall_setzen“ jeweils neu
ausgeführt, wenn das Datumsintervall in Zelle H1 und/oder I1
geändert wird und so habe ich die optimale Lösung.

…wenn Du den Code ‚Datumsintervall_setzen‘ nun noch in einem Modul der Mappe speicherst, in der Du ihn auch aufrufst kannst du die Mappe sogar weitergeben und alles klappt noch immer genau so wie es sollte.

Oder aber Du integrierst den Code der Sub direkt im Change()-Event.

Aber das sind letztlich nur noch Marginalien, denke ich.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Posting ’ Bitte an alle Excelianer die noch kein V
Hallo Reinhard,

du willst den Filterdialog längere zeit offen ahben um ab und
zu neu zu filtern?
Während der Dialog sichtbar ist kannst du aber nichts in
anderen Zellen oder Blättern tun.

danke erstmal, die Antworten hier haben mir sehr weitergeholfen (auch die von Thomas Ramel s.o.).
Auch mit dem Befehl Application.ExecuteExcel4Macro „FILTER?(2)“ konnte ich was anfangen, der eignet sich nämlich gut zum benutzerdefinierten Filtern von Textspalten.

Auch das fällt weg bei einer Userform (UF). Da kann die UF
sichtbar bleiben und du kannst trotzdem in den Zellen/Blättern
weiterarbeiten.

Hier mal ein funktionierendes Beispiel. Klar müßte es noch
verbessert werden, soll ja erst mal zeigen wie das aussehen
könnte:

http://www.file-upload.net/download-3424918/kwMara.x…

Was mir zum Verständnis vielleicht helfen würde, wäre z.B. Dein Posting " Bitte an alle Excelianer die noch kein VBA kennen (Reinhard, 1.11.2006 16:27)". Leider läßt sich die Datei

http://www.winhome.de/Wohin_mit_Vba-Code2.xls

nicht mehr herunterladen (wohl zu alt). Wäre es möglich, sie nochmals einzustellen?
Danke + Gruß
mara

Was mir zum Verständnis vielleicht helfen würde, wäre z.B.
Dein Posting " Bitte an alle Excelianer die noch kein VBA
kennen (Reinhard, 1.11.2006 16:27)". Leider läßt sich die
Datei

http://www.winhome.de/Wohin_mit_Vba-Code2.xls

nicht mehr herunterladen (wohl zu alt). Wäre es möglich, sie
nochmals einzustellen?

Hallo Mara,

tut mich traurig aber ich kann dir da nicht helfen.
Die xls die du meinst hätte auch eine doc sein können. Da habe ich nur beschrieben wei/was einer tun sollte wenn er erstmalig mit Vba-Code konfrontiert wird.
Und das nahezu perfekt mit Bildchen (XL2000) ausgestattet und wirklich von mir aus gesehen alles so versucht daß m.M. nach wirklich jeder zumindest Vba benutzen kann.

Dazu hatte ich geschrieben daß ich nicht (mehr) beurteilen kann ob da auch jeder Punkt für Anfänger verständlich ist.
Deshalb schrieb ich dazu daß ich mir erhoffe es gäbe Rückmeldungen die sagen, das kapier ich nicht usw., sodaß ich daraufhin das verständlicher abändern würde.

Was ist passiert? Ich war ja vorgewarnt von einem erfahrenen Mod aber ich wollte das nicht glauben aber er hatte leider Recht, ich hatte/habe über 2000 Anklicks aber Feedbacks, Rückmeldungen, Nachfragen= Null.

Sorry, hab wieder mal wild rumgeplauidert :frowning:
Ich habe auf meinen Festplatten geschaut, die Datei habe ich nicht mehr.
Sie wird sicher auf einer Festplatte sein die leider ihren Geist aufgab vor paar Jahren.

Aber vergiss das Ganze mit der Datei, da habe ich versucht das Komplettpaket zu beschreiben, also was ein Standardmodul ist, wohin ein Ereigniscode wie Worksheet_Change u.v.m. gehört und daß man den Editor mit Alt+F11 aufruft, von Modul zu Modul mit Doppelklick auf den Modulnamen hüpft und sehr viel mehr.

Aber diese allgemeine Beschreibung brauchst grad DU nicht. Beschreib wo’s hängt, wir geben dir den Schubs und du schaffst das *sehr sicher bin*

PS: eine kleine Chance für die Datei gibt es noch, ich durfte sie ja netterweise auf Webspace hochladen den mir der o.g. Mod zur Verfügung stellte. Ich frag ihn mal ob er sie noch hat. Wenn nicht isse halt weg.

Gruß
Reinhard