打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA应用技巧:使用VBA快速隐藏工作表行
userphoto

2022.06.13 四川

关注
使用Excel VBA隐藏行的简单方法是使用联合区域。通常,如果要使用VBA快速隐藏行,可以选择自动筛选工具,使用一行代码可快速隐藏数千行。然而,如果需要在同一区域内为其他目的使用自动筛选,那就必须单独处理每个单元格。如果了解VBA,当程序必须在多个单元格上循环时,它可能会较慢,尤其是在每次迭代后需要执行操作时。
下面,我们将使用Union方法,联合要操作的行,这将只需要一行代码就能隐藏行,大大减少了代码的运行时间。假设列A中包含有“Hide”“Show”,其中显示为hide的行将被隐藏,显示为show的行将可见,如下图1所示。
1
隐藏行的程序需要设置起点、终点,然后设置从起点到终点的循环。我们设置了两个区域: Rng代表整个使用的列,r代表当前单元格。然后遍历Rng区域,并将连接的区域赋值给第3个区域(称为JoinR)。Union用于联合区域,联合区域是由多个通常不连续的区域组成的区域。然后,我们使用联合区域隐藏所有含有“Hide”的行。
程序代码如下:
Sub HideRows() Dim JoinR As Range Dim Rng As Range Dim sh As Worksheet Dim r As Range Dim lr As Long
'要处理的工作表Set sh = Sheet1    lr = sh.Range('A' & Rows.Count).End(xlUp).Row    Set Rng = sh.Range('A2:A' & lr)
For Each r In Rng.Rows'If WorksheetFunction.CountIf(r,'Hide') Then If r.Value = 'Hide' Then If Not JoinR Is Nothing Then Set JoinR = Application.Union(JoinR, r) Else '含有'Hide'的第一个单元格                 Set JoinR = rEnd IfEnd IfNext r
JoinR.EntireRow.Hidden = TrueEnd Sub
Sheet1是名为Hide的工作表的工作表代码名称。lr代表工作表中最后使用的行的行号。最后,Rng变量是第一个使用的行到最后一个使用的行之间的区域。
Set sh = Sheet1
lr = sh.Range('A' & Rows.Count).End(xlUp).Row
Set Rng = sh.Range('A2:A' & lr)
接下来要做的是创建一个循环构造。对于区域内的每个单元格,检查该单元格是否包含“Hide”。因此,从第2行开始,以最后使用的区域结束。变量由r表示当前单元格。
For Each r In Rng
检查r中的值是否为“Hide”:
If r.Value = 'Hide' Then
下面是关键。为一个称为JoinR的联合区域引入一个变量,需要检查变量JoinR中是否有任何内容。如果它不是空的,那么希望通过简单的添加来增加区域JoinR
下面的代码检查JoinR是否为非空:
If Not JoinR Is Nothing Then
如果不为空,则会将JoinR的区域设置为自身加上由r代表的单元格,从而在每次遇到“Hide”单元格时,都会增加区域JoinR。如果JoinR为空且单元格值等于“Hide”,则将按如下方式为JoinR指定其第一个单元格:
Set JoinR = r
其中,JoinR等于r。现在,JoinR附带了一个可验证的区域,上面检查非空白范围的行将开始并持续添加到联合区域JoinR
最后,在遍历和If语句完成后,该过程将一次性隐藏联合区域,然后该过程结束。
JoinR.EntireRow.Hidden = True
通过一次隐藏行,而不是一行一行地隐藏,节省了大量时间。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
完全手册Excel VBA典型实例大全:通过368个例子掌握
在Excel中粘贴时怎样跳过隐藏行
Excel VBA工作薄 7.7 工作表的拆分的前奏 按照某一列/行批量生成新工作表
Excel-VBA不打开工作薄取值
Excel VBA解读(49):复制或剪切单元格——Copy方法与Cut方法
批量将图片插入到Excel中,且自动调整图片大小以适应单元格的大小!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服