隐藏行,循环工作表

时间:2015-02-01 20:41:22

标签: loops excel-vba hide vba excel

我的目标是在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

2 个答案:

答案 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)时录制宏。