我的目标是在A:A和1:1中输入空白或“隐藏”的公式。 - 当HIDE隐藏行/列时。我的目标是编写vba代码来遍历每个工作表并执行所有HIDE命令。
我写了以下内容并且它不起作用,它只在一张纸上执行hide命令。你能帮忙吗?
Sub hide()
Dim Ver As Range, Hor As Range
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Set Ver = Range("A2:A300")
Set Hor = Range("B2:JA1")
For Each cel In Ver
If cel.Value = "HIDE" Then
cel.EntireRow.Hidden = True
End If
Next cel
For Each cel In Hor
If cel.Value = "HIDE" Then
cel.EntireColumn.Hidden = True
End If
Next cel
Next ws
End Sub
答案 0 :(得分:0)
在循环工作表时,您需要定义您正在查看的范围的父级。
Set Ver = ws.Range("A2:A300")
For Each cel In Ver
...
Set Hor = ws.Range("B2:JA1")
For Each cel In Hor
...
这将通过For each in
循环重新定义每个循环的父工作表。我还建议在退出循环之前明确地将ws设置为空。例如就在Exit Sub
之前,
...
Next ws
Set Ver = nothing
Set Hor = nothing
答案 1 :(得分:0)
虽然可以使用For-each循环来实现这一点,但我强烈建议您避免这种方法。
最快,最干净,最安全的解决方案是利用SpecialCells。
Range("A2:A300").SpecialCells(xlCellTypeConstants, 23).EntireRow.Hidden = True
这样做是选择所有非空白和非公式单元格并一次隐藏相关行。如果您不熟悉SpecialCells,请在使用“GoTo”命令(Ctrl + G)时录制宏。