首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VBA中隐藏多行

在VBA中隐藏多行
EN

Stack Overflow用户
提问于 2020-08-25 20:26:58
回答 1查看 90关注 0票数 0

我有一张Excel表格,我试图用多个条件来隐藏行。其中2个是在特定单元格等于0时隐藏一些行,另一个是如果特定单元格有特定单词则隐藏一些行,最后是如果特定列中有零则隐藏行。当我单独工作时,它似乎可以工作,但我似乎不能让它联合工作。某些行可以包含在多个条件中。请注意,我在这方面是个新手。

这是我尝试过的:

代码语言:javascript
运行
复制
Sub Worksheet_Change(ByVal Target As Range)

Dim xRg As Range
Dim R2 As Range
Dim R3 As Range
Dim R1 As Range
    


Set R1 = Union(Rows("61:61"), Rows("68:69"), Rows("72:72"), Rows("91:106"), Rows("117:125"), Rows("144:155"), Rows("157:158"), Rows("164:164"), Rows("166:166"))
Set R2 = Union(Rows("49:52"), Rows("65:129"))
Set R3 = Union(Rows("53:57"), Rows("130:161"))



Application.ScreenUpdating = False

    For Each xRg In Range("E8:E153")
            If xRg.Value = 0 Then
                xRg.EntireRow.Hidden = True
            Else
                xRg.EntireRow.Hidden = False
            End If
        Next xRg


    If Range("E$15").Value = 0 Then
    
       R3.EntireRow.Hidden = True
        Else
        R3.EntireRow.Hidden = False
    End If
      
    If Range("E$14").Value = 0 Then
    
       R2.EntireRow.Hidden = True
        Else
        R2.EntireRow.Hidden = False
    End If
    
        
    If Range("B$3").Value = "USD" Then
        R1.EntireRow.Hidden = True
        Else
        R1.EntireRow.Hidden = False
    End If

        
  Application.ScreenUpdating = True
End Sub
EN

回答 1

Stack Overflow用户

发布于 2020-08-25 21:16:12

你最好指定你想要得到的结果;在你强加的条件中有优先级吗?例如,在

代码语言:javascript
运行
复制
Range("E$15") = 0

代码语言:javascript
运行
复制
xRg.Value = 0

应该以哪种方式为准?

尝试颠倒说明

代码语言:javascript
运行
复制
Sub Worksheet_Change(ByVal Target As Range)

    Dim xRg As Range
    Dim R2 As Range
    Dim R3 As Range
    Dim R1 As Range

    Set R1 = Union(Rows("61:61"), Rows("68:69"), Rows("72:72"), Rows("91:106"), Rows("117:125"), Rows("144:155"), Rows("157:158"), Rows("164:164"), Rows("166:166"))
    Set R2 = Union(Rows("49:52"), Rows("65:129"))
    Set R3 = Union(Rows("53:57"), Rows("130:161"))
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    R3.EntireRow.Hidden = Range("E$15") = 0
    R2.EntireRow.Hidden = Range("E$14") = 0
    R1.EntireRow.Hidden = Range("B$3") = "USD"
    For Each xRg In Range("E8:E153")
        xRg.EntireRow.Hidden = xRg.Value = 0
    Next xRg
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    
End Sub

PS:使用if..then构造将布尔值赋给布尔值变量没有多大意义。

然后,您必须首先评估具有最低优先级的条件,最后评估具有最高优先级的条件。

优先级: 1,2,3,4

编码: 4,3,2,1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63578843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档