2016-07-21 9 views
0

Ich erstelle ein Excel mit mehreren Hyperlinks auf dem Dashboard-Blatt. Klicken auf einen Link öffnet ein weiteres Blatt mit gefilterten Datensätzen und andere setzen den Filter zurück.Excel-Hyperlink-Makrofehler Laufzeit 1004 Anwendungsdefinierter oder objektdefinierter Fehler

Es funktioniert für einige Links, während für wenige Fehler fehlschlägt: Runtime 1004 Anwendungsdefinierter oder objektdefinierter Fehler.

Links arbeiten: Zelle I11, I14 Linkswurf Fehler: B11, E11.

https://drive.google.com/open?id=0B-gwvoyXA0G0aUJZU3pIM3ZtVWM ist die Makro-Probe Excel Referenz aktiviert

-Code unten:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)  
    Dim rngOpenTickets As Range 
    Dim rngMaxAge As Range 
    Dim rngPlannedFuture As Range 
    Dim rngTotalFuture As Range 

    Set rngOpenTickets = Range("TicketsOpen") 
    Set rngMaxAge = Range("TicketMaxAge") 
    Set rngPlannedFuture = Range("FuturePlanned") 
    Set rngTotalFuture = Range("TotalFuture") 

If Target.Range.Name = rngPlannedFuture.Name Then 
    ApplyFilter 5, "<>" 
ElseIf Target.Range.Name = rngMaxAge.Name Then 
    ApplyFilter 10, rngMaxAge.Text 
ElseIf Target.Range.Name = rngTotalFuture.Name Or Target.Range.Name = rngOpenTickets.Name Then 
    RemoveFilter 
    End If 
End Sub 

Sub RemoveFilter() 
    If ActiveSheet.FilterMode Then 
     ActiveSheet.ShowAllData 
    End If 
End Sub 

Sub ApplyFilter(field As Integer, criteria As String) 
    Selection.AutoFilter 
    Selection.AutoFilter field:=field, Criteria1:=criteria 
End Sub 

etwas Hilfe benötigen diese bei der Lösung. Schätze die Hilfe.

+0

Veröffentlichen Sie die relevanten Teil (e) des Codes in Ihrer Frage. –

+0

bei welcher Zeile ist Ihr Code fehlerhaft? Etwas raten: 1) ist "Target" eine gültige benannte Bereichsreferenz? Ist 'Selection' immer ein gültiger? – user3598756

+0

Fehler bei If Target.Range.Name = rngPlannedFuture.Name, obwohl die angeklickte Verknüpfung für den Bereich rngOpenTickets gilt. Es funktioniert für Bereich rngPlannedFuture und rngTotalFuture – Arihant

Antwort

0

Der Unterschied zwischen den Verbindungen in der Zelle I11, I14 vs B11 ist E11 wie folgt:

In I11, I14 die Verbindungen zuerst gesetzt wurden und dann die Zellen I11:J11, I14:J14 verschmolzen wurden.

In B11, E11 die Zellen B11:C11 wurden E11:F11 zuerst verschmolzen und dann wurden die Links zu den fusionierten Zellen eingestellt.

So in B11:C11, E11:F11 der Link Target ist das fusionierte Bereich, während in I11, I14 der Link Target die einzelne Zelle ist. Deshalb schlägt Target.Range.Name mit B11:C11 und E11:F11 fehl.

Es funktioniert für beide - fusionierte Zellen Link-Ziel und einzelne Zelle Link-Ziel -, wenn Sie Target.Range.Item(1).Name statt nehmen.

If Target.Range.Item(1).Name = rngPlannedFuture.Name Then 
    ApplyFilter 5, "<>" 
    ElseIf Target.Range.Item(1).Name = rngMaxAge.Name Then 
    ApplyFilter 10, rngMaxAge.Text 
    ElseIf Target.Range.Item(1).Name = rngTotalFuture.Name Or Target.Range.Item(1).Name = rngOpenTickets.Name Then 
    RemoveFilter 
    End If 
+0

Großartig, danke die Lösung funktioniert perfekt – Arihant