使用VBA隐藏多个工作表中的多行

时间:2018-03-08 22:17:02

标签: excel vba excel-vba

几年前我写了一些代码,它根据单张纸上的标准隐藏了多张纸的行。代码运行良好,但我想添加几个新表,并且遵循我编写的相同(杂乱)代码,宏变得太大,我得到编译错误(& #34;程序太大")。我确定有一种更好,更清洁,更小的方法可以做到这一点,但在代码方面,我仍然非常环保,并且能够做出任何其他工作。下面是我对单行代码的示例。对于此工作表中的以下范围,这乘以~60次:B12:B31,B36:B65,B70:B79,B84:B88。任何建议将不胜感激!

If Target.Address = "$B$12" Then
    Rows("13").EntireRow.Hidden = (Target.Value = "" And Range("B13") = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("CS Personnel").Rows("13").EntireRow.Hidden = (Target.Value = "" And Range("B13") = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("NSF Condensed").Rows("4").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Basic Budget").Rows("4").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Basic Budget").Rows("58").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Basic Budget").Rows("113").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Hourly Budget").Rows("4").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Hourly Budget").Rows("58").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Hourly Budget").Rows("113").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Burdened Budget").Rows("4").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Burdened Budget").Rows("54").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Burdened Budget").Rows("105").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Hourly Budget (Burdened)").Rows("4").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Hourly Budget (Burdened)").Rows("54").EntireRow.Hidden = (Target.Value = "")
End If
If Target.Address = "$B$12" Then
    Worksheets("Hourly Budget (Burdened)").Rows("105").EntireRow.Hidden = (Target.Value = "")
End If

1 个答案:

答案 0 :(得分:0)

您是否在指定的所有工作表中使用了一列是否需要隐藏特定行?例如,如果你填写" 1"在需要隐藏的每一行的A列中,您可以使用循环来隐藏工作表:

    Dim ws as worksheet
    For each ws in thisworkbook.sheets
        for i = 1 to ws.cells(rows.count,1).end(xlup).row
             if ws.cells(i,1).value = 1 then 
                 ws.cells(i,1).entirerow.hidden =  true
             end if
        next i
   next ws