2016-12-12 1 views
1

Ich möchte Zeilen mit einem Klick auf eine Schaltfläche ausblenden/einblenden. Ich habe dies erreicht, indem mit dem folgenden Code:Zeilen mit VBA ein-/ausblenden - mehrere Bereiche

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)  

omrade = ActiveCell.Row + 4 & ":" & ActiveCell.Row + 37 

    If Rows(omrade).EntireRow.Hidden = True Then 
    Rows(omrade).EntireRow.Hidden = False 
    Else 
    Rows(omrade).EntireRow.Hidden = True 
    End If 

Exit Sub 
End Sub 

Es funktioniert, wenn die Zelle in der gleichen Zelle hyperlinked (z.B. Zelle D5 bis D5 hyperlinked wird - dies würde wechseln die Sichtbarkeit der Zeile 9-42).

Ich habe jedoch mehrere Links (> 100), und ich möchte nicht jede Zellreferenz im Hyperlink manuell eingeben. Ich habe versucht, dynamische Hyperlinks mithilfe der Hyperlink-Formel zu erstellen, aber dann wird mein VBA-Code nicht ausgeführt.

EDIT: Versucht, mein Problem zu klären.

+0

Es ist nicht klar, was Sie fragen - wenn ich auf einen Hyperlink in der Zelle "A1" klicke, sollte er die Sichtbarkeit der Zeilen 5 bis 38 umschalten? Und wenn ich auf einen Hyperlink in der Zelle "B2" klicke, sollte er die Sichtbarkeit der Zeilen 6 bis 39 umschalten? etc? –

+0

Das ist richtig. – Anders

Antwort

2

Probieren Sie dies aus:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 

    Dim rngHyperlinkCell As Range 
    Dim omrade As Range 

    Set rngHyperlinkCell = Target.Range 
    Set omrade = rngHyperlinkCell.Parent.Rows(rngHyperlinkCell.Row + 4 & ":" & rngHyperlinkCell.Row + 37) 

    If omrade.EntireRow.Hidden = True Then 
     omrade.EntireRow.Hidden = False 
    Else 
     omrade.EntireRow.Hidden = True 
    End If 

    Exit Sub 
End Sub 
+0

Das löst mein Problem! Nur ein kleines Problem - wie kann ich die selbe Zelle auswählen, auf die ich nach dem Ein-/Ausblenden geklickt habe? Wenn es ein Hyperlink zu A1 ist - die A1-Zelle ist ausgewählt und ich verliere Spur davon, wo in dem Blatt ich bin. – Anders

+0

Es wurde gelöst, der folgende Code hinzugefügt: ActiveSheet.Cells (rngHyperlinkCell.Row, rngHyperlinkCell.Column) .Wählen – Anders

1

versuchen, etwas wie folgt aus:

Rows(omrade).EntireRow.Hidden = not Rows(omrade).EntireRow.Hidden 

Dieses wenn sichtbar verstecken würde und sichtbar machen, wenn versteckt.

+0

Das würde meinen Code vereinfachen - allerdings möchte ich mehrere Links haben, um abhängig vom Standort des Links einen anderen Satz von Zeilen umzuschalten. Und ich möchte nicht manuell die Zellreferenz in jeder Verbindung eingeben. – Anders

1

Ich habe mich gefragt, ob dies zu schreiben, wie es @Robin sehr ähnlich ist, und verwendet auch das Verborgene, dass @Vityata verwendet:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 

    Dim subAddress As Range 
    Dim omrade As Range 

    'Set subAddress = Range(Target.subAddress) 'Where the link looks at. 
    Set subAddress = Target.Range 'Where the link is. 

    With subAddress.Parent 
     Set omrade = .Range(.Cells(subAddress.Row + 4, 1), .Cells(subAddress.Row + 37, 1)) 

     omrade.EntireRow.Hidden = Not omrade.EntireRow.Hidden 

    End With 

End Sub 
Verwandte Themen