簡體   English   中英

VBA 隱藏/取消隱藏活動單元格下方的 3 行

[英]VBA Hide/Unhide 3 rows below active cell

我有下面的代碼運行良好,但是我有太多的子帳戶(如“Ads_20_21”),我必須多次復制代碼並創建新的命名范圍,基本上只是隱藏/取消隱藏下面的 3 行每個子賬戶。 是否有一個代碼可以分配給一個按鈕,該按鈕只會隱藏/取消隱藏活動單元格下方的 3 行,我試過到處尋找幫助但沒有運氣。 非常感謝任何幫助。

Sub ToggleHiddenRow(rng As Range)
  With rng.EntireRow
    .Hidden = Not .Hidden
  End With
End Sub

Sub Ads_20_21()
    ToggleHiddenRow ActiveSheet.Range("Advertising_20_21")
End Sub

我建議使用此代碼:-

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    Const TriggerClm        As String = "A"         ' change to suit
    Const FirstDataRow      As Long = 2             ' change to suit
    Const RowsToHide        As Long = 3             ' change to suit
    Dim Rng                 As Range
    
    Set Rng = Range(Cells(FirstDataRow, TriggerClm), Cells(Rows.Count, TriggerClm).End(xlUp))
    If Not Application.Intersect(Target, Rng) Is Nothing Then
        Set Rng = Range(Rows(Target.Row + 1), Rows(Target.Row + RowsToHide + 1))
        Rng.Rows.Hidden = Not Rng.Rows(1).Hidden
        Cancel = True
    End If
End Sub

這是一個響應雙擊事件的事件過程,這意味着它在您雙擊一個單元格時運行。 只會在您想要操作的工作表的代碼模塊中記錄該事件。 因此,該程序必須安裝在該模塊中而不是其他任何地方。 由於此模塊與工作表上發生的情況有特殊聯系,因此 Excel 在創建選項卡時會設置此模塊。 使用現有模塊,而不是您自己插入的模塊。

代碼頂部的 3 個常量供您調整。 確定要雙擊的列、第一個數據行和要隱藏/顯示的行數,從雙擊行下方的行開始。 當您雙擊另一列或第一個數據行上方時,該過程將不會運行。 運行時,它將隱藏 3 行(如果它們可見)或取消隱藏(如果它們被隱藏)。

我會尋找一種方法讓程序知道何時單擊與子帳戶相關的行並跳過此類行的操作。 如果您有這樣的標准,請在If Not Application.Intersect(Target, Rng) Is Nothing Then之前在代碼中建立它,然后將其包含在同一行中。 然而,正如現在的代碼一樣,點擊錯誤的行不會有任何大的懲罰。 撤消操作只需雙擊即可。

暫無
暫無

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

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