AW: Autofilter Wert verknüpfen
22.06.2007 08:11:00
Dan
Hallo Heinz,
ich habe keine 'richtige' Moeglichkeit gefunden, wie man den Filter-Change Event abfangen koennte. Der AutoFilter bzw. Filter Objekt loesst keine Events aus und auch kein von den Sheet-Events wurde bie einem Filter-Change ausgeloesst.
I schlage aber diese 'mauelle' Loesung vor: man startet den Code im SheetSelectionChange Event Handler, also nach dem man den Filter geaendert hat, muss man im Sheet eine andere Zelle auswaehlen, als die die gerade ausgewaehlt ist.
Eine andere Loesung waere z.B. dass man beim oeffnen des Workbooks einen Timer startete und z.B. alle 10 Sekunden den Code vom Timer ausfuehren liess. Oder oeffne hier im Forum ein neues Thread und frag dies im Forum, moeglicher Weisse gibt es eine bessere Loesung :-). Gurss Dan, cz.
' --------------------------------------------------------------------------------------------------------------------------------------
' Dieser Code kommt in den Klassen-Module vom ThisWorkbook
Option Explicit
Private m_showFilterCriteria1Cell As Range
Private Const SHOW_FILTER_CRITERIA1_CELL_ADDRESS As String = "C1"
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Set m_showFilterCriteria1Cell = Sh.Range(SHOW_FILTER_CRITERIA1_CELL_ADDRESS)
m_showFilterCriteria1Cell.Value = GetCriteria1OfFilter(Sh, 1)
End Sub
' --------------------------------------------------------------------------------------------------------------------------------------
' --------------------------------------------------------------------------------------------------------------------------------------
' Dieser Code kommt in ein Standard-Module
Option Explicit
Public Function GetCriteria1OfFilter(ByRef io_sheet As Worksheet, ByVal i_filterNumber As Byte) _
As String
On Error GoTo Err_Handler
Dim afi As AutoFilter
Dim fi As Filter
GetCriteria1OfFilter = ""
Set afi = io_sheet.AutoFilter
If (afi Is Nothing) Then
Exit Function
End If
If (i_filterNumber > 0 And i_filterNumber