在工作表上隐藏多个不同范围的行
所以我有下面的代码,我试图隐藏同一张表中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 h
和Next 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)