Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Hyperlink + Filter

Hyperlink + Filter
21.03.2013 08:36:28
Marko
Hey,
sorry wenn das Theman schon bearbeitet wurde, aber ich bin während meiner Suche nicht auf eine gute Lösung gekommen die meinem Problem entspricht.
Es geht um die Bearbeitung eines Workbooks, die alten Texte stehen in der Tabelle bereit und die
Meine Mappe:
1. Blatt: Tabelle mit Kapitel und zuständigem Bearbeiter
2. Blatt: Tabelle mit Kapitel, zuständigem Bearbeiter, alte Texte, Änderungen
Auf dem 2. Blatt habe ich schon einen Filter eingerichtet, sodass jeder Bearbeiter seinen Namen auswählen kann und somit nur die Kapitel erscheinen, die er bearbeiten muss.
Jedoch möchte ich das ganze eleganter und für "Dummys" lösen. Auf dem 1. Blatt soll für jeden "Bearbeiter" ein Link hinterlegt sein, der ihn dann automatisch auf das 2. Blatt leitet und GLEICHZEITIG den Filter für den jeweiligen Namen aktiviert.
Hoffe mein Problem ist klar geworden und mir kann jemand helfen. Kenne mich leider mit Makros nicht aus, und ich habe keine Formel gefunden mit der ich es lösen könnte
https://www.herber.de/bbs/user/84475.xlsx

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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.

Anzeige
AW: Hyperlink + Filter
21.03.2013 09:17:17
Marko
Super! Vielen Dank Klaus!
Eine Frage habe ich noch: Ich möchte nun unter meine Übersicht noch eine Zeile "zum gesamten Workbook" einfügen und natürlich sollte dann der Autofilter zwar verfügbar sein, aber noch nichts speziell filtern, sodass alles sichtbar ist.
Wie ist das möglich?
Danke und viele Grüße

Anzeige
AW: Hyperlink + Filter
21.03.2013 09:55:24
Klaus
Hi,
bei den DIMS oben fügst du hinzu:
DIM rAlles as Range
und in den Code, da wo die anderen Blöcke auch stehen:
Set rAlles = Range("F7")
If Not Intersect(Target, rAlles) Is Nothing Then
Cancel = True
Sheets("Workbook").Activate
ActiveSheet.Range("$A$1:$D$1").AutoFilter
End If

dabei gehe ich davon aus, dass der Link für "alles" in F7 steht. Das kannst du ja anpassen.
Das beispiel ist für den "Doppelclick"-Code. Nutzt du den "SelectionChange"-Code, dann musst du die Zeile Cancel = True löschen.
Grüße,
Klaus M.vdT.

Anzeige
AW: Hyperlink + Filter
21.03.2013 13:45:50
Marko
Super, vielen Dank !!!

Danke für die Rückmeldung! owT.
21.03.2013 13:46:07
Klaus
.
;
Anzeige
Anzeige

Infobox / Tutorial

Hyperlink und Filter in Excel nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei und wechsle zu dem Blatt, wo du die Hyperlinks erstellen möchtest.

  2. Rechtsklicke auf den Reiter der Übersichtstabelle und wähle "Code anzeigen", um den VBA-Editor zu öffnen.

  3. Füge folgenden VBA-Code in das Code-Feld ein:

    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
  4. Speichere die Änderungen und schließe den VBA-Editor.

  5. Testen: Klicke doppelt auf den Namen oder das Kapitel, um auf das zweite Blatt zu gelangen und den Filter zu aktivieren.


Häufige Fehler und Lösungen

  • Fehler: Makro funktioniert nicht
    Lösung: Stelle sicher, dass Makros in Excel aktiviert sind. Gehe zu den Excel-Optionen und aktiviere die Makros.

  • Fehler: Autofilter wird nicht gesetzt
    Lösung: Überprüfe, ob der Autofilter im "Workbook"-Blatt aktiv ist. Der Code funktioniert nur, wenn der Autofilter bereits gesetzt ist.


Alternative Methoden

  • Verwenden von Hyperlinks: Statt VBA, kannst du auch Hyperlinks zu den Zellen verwenden. Diese Methode ist einfacher, ermöglicht jedoch kein automatisches Filtern.

  • Excel-Filter manuell: Du kannst den Filter manuell setzen, indem du die Dropdowns in der Kopfzeile verwendest. Dies ist jedoch weniger benutzerfreundlich.


Praktische Beispiele

  • Beispiel für einen Link zu "Alles": Wenn du einen Link erstellen möchtest, der alle Einträge zeigt, füge folgenden Code hinzu:

    DIM rAlles as Range
    Set rAlles = Range("F7") ' F7 ist die Zelle mit dem Link für alle
    If Not Intersect(Target, rAlles) Is Nothing Then
       Cancel = True
       Sheets("Workbook").Activate
       ActiveSheet.Range("$A$1:$D$1").AutoFilter
    End If
  • Hyperlink zu einem bestimmten Kapitel: Du könntest Hyperlinks in Zelle A1 zu den Kapiteln erstellen, die dann den gleichen Filterprozess wie oben beschrieben auslösen.


Tipps für Profis

  • VBA optimieren: Wenn du oft mit großen Datenmengen arbeitest, optimiere den VBA-Code, um die Performance zu verbessern.

  • Userform verwenden: Erstelle ein Userform, um die Auswahl der Bearbeiter zu erleichtern und die Filterfunktion zu integrieren.


FAQ: Häufige Fragen

1. Wie aktiviere ich Makros in Excel?
Gehe zu "Datei" > "Optionen" > "Trust Center" > "Einstellungen für das Trust Center" > "Makroeinstellungen" und aktiviere die Makros.

2. Kann ich den Filter auch anders setzen?
Ja, du kannst die Autofilter-Funktion auch manuell über die Menüleiste aktivieren, aber das ist weniger effizient als die Verwendung von VBA.

3. Was tun, wenn der VBA-Code nicht funktioniert?
Überprüfe, ob der Code in der richtigen Tabelle eingefügt wurde und dass die Blattnamen korrekt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige