[英]Excel VBA Function to hide/unhide Rows
我是 VBA/宏的新手。 根據我的情況,我需要一些幫助來確定如何隱藏/取消隱藏行。 這是我的桌子:
見表:在此處輸入圖像描述
我想做的是:
1) 創建一個具有三個參數的函數(或子函數):
示例:Hide_Unhide(flagRange, True, "P")
2) 此函數將根據傳遞到參數中的標志隱藏所有行。
任何建議和樣品表示贊賞。
這里有兩個選項。 第二個 sub 會更快,因為它將一次隱藏所有行,而不是隱藏行的許多可能迭代。 要隱藏的行數越大,您會注意到使用Union
方法節省的時間越多
Option Explicit
Sub HideMe(FlagRange As Range, Flag As String)
FlagRange.EntireRow.Hidden = False
Dim FlagCell As Range
Application.ScreenUpdating = False
For Each FlagCell In FlagRange
FlagCell.EntireRow.Hidden = FlagCell = Flag 'Rows get hidden here
Next FlagCell
Application.ScreenUpdating = True
End Sub
Option Explicit
Sub HideMeUnion(FlagRange As Range, Flag As String)
FlagRange.EntireRow.Hidden = False
Dim FlagCell As Range, HideMe As Range
For Each FlagCell In FlagRange
If FlagCell = Flag Then
If HideMe Is Nothing Then
Set HideMe = FlagCell
Else
Set HideMe = Union(HideMe, FlagCell)
End If
End If
Next FlagCell
'rows gettin hidden here all at once
If Not HideMe Is Nothing Then HideMe.EntireRow.Hidden = True
End Sub
試試這個:
Private sub Hide_Unhide(FlagRange as Range, Hide as Boolean, FlagValue as String)
Dim c as Variant
For Each c in FlagRange
c.EntireRow.Hidden = False
Next c
For Each c in FlagRange
If c.Value2 = FlagValue Then
c.EntireRow.Hidden = Hide
End IF
Next c
End Sub
您可以使用以下解決方案來隱藏/取消隱藏行:
Function Hide_Unhide(flagRange As Range, hideAction As Boolean, Flag As String)
For Each Row In flagRange.Rows
If Row.Cells(3) = Flag Then
Row.EntireRow.Hidden = hideAction
End If
Next Row
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.