簡體   English   中英

使用VBA隱藏/取消隱藏行-多個范圍

[英]Hide/Unhide rows with VBA - multiple ranges

我想通過單擊按鈕來隱藏/取消隱藏行。 我通過使用以下代碼實現了這一點:

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

如果單元格被超鏈接到同一單元格(例如,單元格D5被超鏈接到D5-這將切換第9-42行的可見性),它將起作用。

但是,我有多個鏈接(> 100),並且我不想在超鏈接中手動輸入每個單元格引用。 我嘗試使用Hyperlink公式制作動態超鏈接,但隨后我的VBA代碼將無法運行。

編輯:試圖澄清我的問題。

嘗試這樣的事情:

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

如果可見,則將其隱藏;如果隱藏,則將其隱藏。

試試看:

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

End Sub

我想知道是否要發布它,因為它與@Robin非常相似,並且還使用了@Vityata使用的Hidden:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM