在工作表上隐藏多个不同范围的行

所以我有下面的代码,我试图隐藏同一张表中G行的值为零的不同范围集合中的行。

看代码:

Sub Hide_Rows() Dim LR As Long, i As Long, g As Long, h As Long Application.ScreenUpdating = False With Sheets("PAYROLL SUMMARY") LR = .Range("AB" & Rows.Count).End(xlUp).Row For i = 19 To 248 For g = 469 To 498 For h = 719 To 748 .Rows(i).Hidden = .Range("G" & i).Value = 0 .Rows(g).Hidden = .Range("G" & g).Value = 0 .Rows(h).Hidden = .Range("G" & h).Value = 0 Next i Next g Next h End With Application.ScreenUpdating = True End Sub 

我收到以下消息“编译错误:无效的下一个控制variables引用”。

任何见解都会很棒!

你需要切换Next hNext i来编译这段代码:

  For i = 19 To 248 For g = 469 To 498 For h = 719 To 748 .Rows(i).Hidden = .Range("G" & i).Value = 0 .Rows(g).Hidden = .Range("G" & g).Value = 0 .Rows(h).Hidden = .Range("G" & h).Value = 0 Next h Next g Next i 

但是,我不明白你想要做什么,以及相互嵌套循环的目的是什么。

另外,如果以后不在代码中使用它,计算variablesLR的目的是什么?

如果您只想对三个单独的数据范围进行相同的操作,则不需要将三个循环嵌套在一起。 你应该做三个独立的循环,如下所示:

  Sub Hide_Rows() Dim LR As Long, i As Long Application.ScreenUpdating = False With Sheets("PAYROLL SUMMARY") LR = .Range("AB" & Rows.Count).End(xlUp).Row For i = 19 To 248 .Rows(i).Hidden = .Range("G" & i).Value = 0 Next i For i = 469 To 498 .Rows(i).Hidden = .Range("G" & i).Value = 0 Next i For i = 719 To 748 .Rows(i).Hidden = .Range("G" & i).Value = 0 Next i End With Application.ScreenUpdating = True End Sub 

请注意,对于空单元格,expression式.Range("G" & i).Value = 0也会返回True ,所以G列中所有具有空单元格的行也将被隐藏。

如果您不想隐藏空单元格,请使用.Text代替.Value

 .Rows(i).Hidden = (.Range("G" & i).Text = 0)