几年前我写了一些代码,它根据单张纸上的标准隐藏了多张纸的行。代码运行良好,但我想添加几个新表,并且遵循我编写的相同(杂乱)代码,宏变得太大,我得到编译错误(& #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
答案 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