前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA应用技巧:使用VBA快速隐藏工作表行

VBA应用技巧:使用VBA快速隐藏工作表行

作者头像
fanjy
发布2022-11-16 10:30:29
3.9K0
发布2022-11-16 10:30:29
举报
文章被收录于专栏:完美Excel

标签:VBA

使用Excel VBA隐藏行的简单方法是使用联合区域。通常,如果要使用VBA快速隐藏行,可以选择自动筛选工具,使用一行代码可快速隐藏数千行。然而,如果需要在同一区域内为其他目的使用自动筛选,那就必须单独处理每个单元格。如果了解VBA,当程序必须在多个单元格上循环时,它可能会较慢,尤其是在每次迭代后需要执行操作时。

下面,我们将使用Union方法,联合要操作的行,这将只需要一行代码就能隐藏行,大大减少了代码的运行时间。假设列A中包含有“Hide”和“Show”,其中显示为hide的行将被隐藏,显示为show的行将可见,如下图1所示。

图1

隐藏行的程序需要设置起点、终点,然后设置从起点到终点的循环。我们设置了两个区域: Rng代表整个使用的列,r代表当前单元格。然后遍历Rng区域,并将连接的区域赋值给第3个区域(称为JoinR)。Union用于联合区域,联合区域是由多个通常不连续的区域组成的区域。然后,我们使用联合区域隐藏所有含有“Hide”的行。

程序代码如下:

代码语言:javascript
复制
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 = r
End If
End If
Next r

    JoinR.EntireRow.Hidden = True
End 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

通过一次隐藏行,而不是一行一行地隐藏,节省了大量时间。

注:本文学习整理自thesmallman.com,有兴趣的朋友可到该网站下载原始示例工作表,或者到知识星球App完美Excel社群下载。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档