AW: Hyperlink + Filter
21.03.2013 08:52:39
Klaus
Hallo Marko,
in deiner Tabelle rechtsclick auf den Reiter "Übersicht", dann den Menüpunkt "View Code" (deutsch: Code Anzeigen?). Der VBA-Editor geht auf, das große weiße Feld rechts ist das Code-Feld der Übersicht-Tabelle. Dort kopierst du folgenden Code hin:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rKapitel As Range
Dim rPerson As Range
Dim sFilter As String
Dim lRow As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
Set rKapitel = Range("A2:A" & lRow)
Set rPerson = Range("B2:B" & lRow)
sFilter = Target.Value
If Not Intersect(Target, rKapitel) Is Nothing Then
Cancel = True
Sheets("Workbook").Activate
ActiveSheet.Range("$A$1:$D$1").AutoFilter
ActiveSheet.Range("$A$1:$D$1").AutoFilter Field:=2, Criteria1:=sFilter
End If
If Not Intersect(Target, rPerson) Is Nothing Then
Cancel = True
Sheets("Workbook").Activate
ActiveSheet.Range("$A$1:$D$1").AutoFilter
ActiveSheet.Range("$A$1:$D$1").AutoFilter Field:=1, Criteria1:=sFilter
End If
End Sub
Ein Doppelclick auf den Namen ODER das Kapitel führt ins Workbook-Sheet und filtert dort entsprechend.
Ist dir statt dem Doppelclick ein einfacher Click lieber, dann nimm stattdessen diesen Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Hell
Dim rKapitel As Range
Dim rPerson As Range
Dim sFilter As String
Dim lRow As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
Set rKapitel = Range("A2:A" & lRow)
Set rPerson = Range("B2:B" & lRow)
sFilter = Target.Value
If Not Intersect(Target, rKapitel) Is Nothing Then
Sheets("Workbook").Activate
ActiveSheet.Range("$A$1:$D$1").AutoFilter
ActiveSheet.Range("$A$1:$D$1").AutoFilter Field:=2, Criteria1:=sFilter
End If
If Not Intersect(Target, rPerson) Is Nothing Then
Sheets("Workbook").Activate
ActiveSheet.Range("$A$1:$D$1").AutoFilter
ActiveSheet.Range("$A$1:$D$1").AutoFilter Field:=1, Criteria1:=sFilter
End If
Hell:
End Sub
Der zieht allerdings auch an, wenn du einen Namen / ein Kapitel per Tastatur ansteuerst ...
Deine Aufgabenstellung war "click auf den Namen und ..."
Ich habe das mal auf "click auf Namen oder Kaptiel" ausgeweitet, weil ich das aufgrund deines Autofilter-Bereiches für logisch empfunden habe. Willst du nur den Namen haben, lösche aus dem Makro den Block If Not Intersect(Target, rKapitel) Is Nothing Then [...] EndIf.
ACHTUNG!
Sollte jemals der Autofilter im Blatt "Workbook" aufgehoben oder woanders gesetzt werden, dann steigt das Makro aus! Auch dafür hätte ich eine Lösung, falls du möchtest (nämlich den Autofilter per VBA genau dahin setzen wo er sein soll)
Grüße,
Klaus M.vdT.