[英]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.