Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
964to968
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
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

dynamischen Autofilter- Datum suchen lassen

dynamischen Autofilter- Datum suchen lassen
31.03.2008 13:04:00
Aron
Hallo hab das Programm kopiert und in meiner Excel-Tabelle verwendet.
Leider kann dieser Visual Basic basierende Autofilter kein Datum sotieren(suchen).
Wie muss ich das Programm abändern, so dass ich nach einem Datum suchen kann?
Danke im voraus. Aron.
Option Explicit ' Variablendeklaration erforderlich

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'* 09.02.08                                       *
'* erstellt von Karin, http://beverly.excelhost.de*
'* beverly@excelhost.de                           *
Dim raBereich As Range
Dim raZelle As Range            ' Variable für die Zelle als Range
'   Wirkung des Codes auf Zeile 1 der Tabelle im Filterbereich zulassen
Set raBereich = Intersect(Target, Range(Cells(1, ActiveSheet.AutoFilter.Range(1).Column), _
Cells(1, ActiveSheet.AutoFilter.Range(1).Column + ActiveSheet.AutoFilter.Filters.Count - _
_
1)))
'   Eingabe erfolgte im festgelegten Bereich
If Not raBereich Is Nothing Then
'       Bildschirmaktualisierung aus
Application.ScreenUpdating = False
'       Reaktion auf Eingabe abschalten
Application.EnableEvents = False
'       Schleife über alle Zellen der Zeile 1 der Tabelle
For Each raZelle In raBereich
'           Bezieht sich auf den Filterbereich
With ActiveSheet.AutoFilter.Range
'               Eingabe wurde gelöscht
If raZelle = "" Then
'                   Autofilter für das betreffende Fald zurücksetzen
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
Column
'                   in die betreffende Zelle eintragen
raZelle = "Suchbegriff eingeben"
Else
'                   Suchkriterium ist eine Zahl
If IsNumeric(raZelle) Then
'                       Autofilter für das betreffende Feld setzen, Filterkriterium "entspricht" _
_
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
_
Column, _
Criteria1:="=" & raZelle
Else
'                      Autofilter für das betreffende Feld setzen, Filterkriterium "Enthält"
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
_
Column, _
Criteria1:="=*" & raZelle & "*"
End If
End If
End With
Next raZelle
'       Reaktion auf Eingabe einschalten
Application.EnableEvents = True
'       Bildschirmaktualisierung ein
Application.ScreenUpdating = True
End If
End Sub


8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: dynamischen Autofilter- Datum suchen lassen
31.03.2008 13:17:23
Hajo_Zi
Hallo Aron,
das Satum für Autofilter übergebe ich z.B. so

Sub Autofilter_setzen()
Dim strdatumvon As Date
strdatumvon = "12.05.48"
Range("I2").AutoFilter Field:=9, Criteria1:=">=" & Year(strdatumvon) & "/" & _
Month(strdatumvon) & "/" & Day(strdatumvon)
End Sub



AW: dynamischen Autofilter- Datum suchen lassen?
31.03.2008 13:29:00
Aron
Hallo erstmal danke!
Hab ich das jetzt so richtig gemacht?
Was bedeutet Field:=9 ?
Danke Aron
Option Explicit ' Variablendeklaration erforderlich

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'* 09.02.08                                       *
'* erstellt von Karin, http://beverly.excelhost.de*
'* beverly@excelhost.de                           *
Dim raBereich As Range
Dim raZelle As Range            ' Variable für die Zelle als Range
Dim strdatumvon As Date
strdatumvon = "12.05.48"
'   Wirkung des Codes auf Zeile 1 der Tabelle im Filterbereich zulassen
Set raBereich = Intersect(Target, Range(Cells(1, ActiveSheet.AutoFilter.Range(1).Column), _
Cells(1, ActiveSheet.AutoFilter.Range(1).Column + ActiveSheet.AutoFilter.Filters.Count - _
1)))
'   Eingabe erfolgte im festgelegten Bereich
If Not raBereich Is Nothing Then
'       Bildschirmaktualisierung aus
Application.ScreenUpdating = False
'       Reaktion auf Eingabe abschalten
Application.EnableEvents = False
'       Schleife über alle Zellen der Zeile 1 der Tabelle
For Each raZelle In raBereich
'           Bezieht sich auf den Filterbereich
With ActiveSheet.AutoFilter.Range
'               Eingabe wurde gelöscht
If raZelle = "" Then
'                   Autofilter für das betreffende Fald zurücksetzen
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
Column
'                   in die betreffende Zelle eintragen
raZelle = "Suchbegriff eingeben"
Else
'                   Suchkriterium ist eine Zahl
If IsNumeric(raZelle) Then
'                       Autofilter für das betreffende Feld setzen, Filterkriterium "entspricht" _
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
Column, _
Criteria1:="=" & raZelle
Else
'                      Autofilter für das betreffende Feld setzen, Filterkriterium "Enthält"
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
Column, _
Criteria1:="=*" & raZelle & "*"
If IsDate(raZelle) Then
Range("F1").AutoFilter Field:=9, Criteria1:=">=" & Year(strdatumvon) & " _
/" & _
Month(strdatumvon) & "/" & Day(strdatumvon)
End If
End If
End If
End With
Next raZelle
'       Reaktion auf Eingabe einschalten
Application.EnableEvents = True
'       Bildschirmaktualisierung ein
Application.ScreenUpdating = True
End If
End Sub


Anzeige
AW: dynamischen Autofilter- Datum suchen lassen?
31.03.2008 13:40:42
Hajo_Zi
Hallo Aron,
9 = 9. Spalte
Gruß Hajo

AW: dynamischen Autofilter- Datum suchen lassen?
31.03.2008 13:48:33
Aron
Hallo hab deinen Code benutzt und :=9 in :=6 geändert, aber es funktioniert nicht.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'* 09.02.08                                       *
'* erstellt von Karin, http://beverly.excelhost.de*
'* beverly@excelhost.de                           *
Dim raBereich As Range
Dim raZelle As Range            ' Variable für die Zelle als Range
Dim strdatumvon As Date
strdatumvon = "12.05.48"
'   Wirkung des Codes auf Zeile 1 der Tabelle im Filterbereich zulassen
Set raBereich = Intersect(Target, Range(Cells(1, ActiveSheet.AutoFilter.Range(1).Column), _
Cells(1, ActiveSheet.AutoFilter.Range(1).Column + ActiveSheet.AutoFilter.Filters.Count - _
1)))
'   Eingabe erfolgte im festgelegten Bereich
If Not raBereich Is Nothing Then
'       Bildschirmaktualisierung aus
Application.ScreenUpdating = False
'       Reaktion auf Eingabe abschalten
Application.EnableEvents = False
'       Schleife über alle Zellen der Zeile 1 der Tabelle
For Each raZelle In raBereich
'           Bezieht sich auf den Filterbereich
With ActiveSheet.AutoFilter.Range
'               Eingabe wurde gelöscht
If raZelle = "" Then
'                   Autofilter für das betreffende Fald zurücksetzen
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
Column
'                   in die betreffende Zelle eintragen
raZelle = "Suchbegriff eingeben"
Else
'                   Suchkriterium ist eine Zahl
If IsNumeric(raZelle) Then
'                       Autofilter für das betreffende Feld setzen, Filterkriterium "entspricht" _
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
Column, _
Criteria1:="=" & raZelle
Else
'                      Autofilter für das betreffende Feld setzen, Filterkriterium "Enthält"
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
Column, _
Criteria1:="=*" & raZelle & "*"
If IsDate(raZelle) Then
Range("F1").AutoFilter Field:=6, Criteria1:=">=" & Year(strdatumvon) & " _
/" & _
Month(strdatumvon) & "/" & Day(strdatumvon)
End If
End If
End If
End With
Next raZelle
'       Reaktion auf Eingabe einschalten
Application.EnableEvents = True
'       Bildschirmaktualisierung ein
Application.ScreenUpdating = True
End If
End Sub


Anzeige
AW: dynamischen Autofilter- Datum suchen lassen?
31.03.2008 13:57:18
Beverly
Hi Aron,
änder in dem ursprünglichen Code nur diesen Teil

If IsNumeric(raZelle) Then
'                       Autofilter für das betreffende Feld setzen, Filterkriterium "entspricht" _
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
Column, _
Criteria1:="=" & raZelle
ElseIf IsDate(raZelle) Then
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
Column, _
Criteria1:=">=" & Year(raZelle) & "/" & Month(raZelle) & "/" & Day( _
raZelle)
Else
'                      Autofilter für das betreffende Feld setzen, Filterkriterium "Enthält"
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
Column, _
Criteria1:="=*" & raZelle & "*"
End If




Anzeige
AW: dynamischen Autofilter - Korrektur
31.03.2008 14:22:18
Beverly
Hi Aron,
der Teil muss so heißen

If IsNumeric(raZelle) Then
'            Autofilter für das betreffende Feld setzen, Filterkriterium "entspricht"
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1).Column, _
Criteria1:="=" & raZelle
ElseIf IsDate(raZelle) Then
'            Autofilter für das betreffende Feld setzen, Filterkriterium Datum
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1).Column, _
Criteria1:=">=" & Year(raZelle) & "/" & Month(raZelle) & "/" & Day(raZelle), _
Criteria2:="


Andernfalls werden auch alle Datumswert größer als das gesuchte angezeigt.



Anzeige
Danke!
31.03.2008 14:48:00
Aron
Danke super!!!

AW: dynamischen Autofilter- Datum suchen lassen?
31.03.2008 14:38:00
Aron
Danke schon besser leider sotiert der Autofilter nach dem eingebenen Datum(Hab mich vielleicht falsch ausgedrückt) Wie kann ich nur die Zeile anzeigen lassen in der das Datum steht?
mfg Aron

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige