Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA,循环所有选项卡以根据单元格值隐藏行;隐藏“;_Vba_Excel - Fatal编程技术网

VBA,循环所有选项卡以根据单元格值隐藏行;隐藏“;

VBA,循环所有选项卡以根据单元格值隐藏行;隐藏“;,vba,excel,Vba,Excel,我试图创建一个代码,根据所有选项卡上“AC”列中的“hide”值隐藏行。我无法使此代码在所有工作表中循环。我知道ActiveSheet可能是问题的一部分,但这是我让它隐藏任何工作表上的行的唯一方法 Sub HideRows() Dim WS_Count As Integer Dim I As Integer Dim cell As Range WS_Count = ActiveWorkbook.Worksheets.Count For I = 1 To

我试图创建一个代码,根据所有选项卡上“AC”列中的“hide”值隐藏行。我无法使此代码在所有工作表中循环。我知道ActiveSheet可能是问题的一部分,但这是我让它隐藏任何工作表上的行的唯一方法

Sub HideRows()

    Dim WS_Count As Integer
    Dim I As Integer
    Dim cell As Range

    WS_Count = ActiveWorkbook.Worksheets.Count
    For I = 1 To WS_Count

    For Each cell In ActiveSheet.Range("AC5:AC14")
        With cell
            .EntireRow.Hidden = .Value = "HIDE"
        End With
    Next
    Next I

End Sub
这个代码应该可以工作

Sub HideRows()

    Dim ws As Worksheet
    Dim lastRow As Integer
    Dim actCell As Range


    For Each ws In Worksheets
        lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 'Get the last row of the table

        For Each actCell In ws.Range("AC5:AC" & lastRow) 'Iterate from row 5 until the last row of the table, if you have an fixed range just change it to Range("AC5:AC14") for example.
            With actCell
                If ws.Range("AC" & .Row) = "HIDE" Then
                    .EntireRow.Hidden = True
                End If
            End With
        Next
    Next
End Sub

ActiveSheet.Range(“AC5:AC14”)
更改为
Sheets(I).Range(“AC5:AC14”)
或者,如果您希望将活动工作表更改为您的代码当前正在处理的工作表,请添加
Sheets(I)。在内部for each循环之前激活
。@ScottCraner给出的解决方案是更好的实践。但是,这非常有效,Scott,谢谢。现在,我尝试根据P33:Y33中的值隐藏列。我将范围和EntireRow.Hidden更改为EntireColumn.Hidden,但不起作用。有什么想法吗?当用户有明确定义的范围时,为什么要添加
lastRow
变量?为了使其动态化,如果他添加更多行怎么办?是的,这可能是一个原因,但如果他已经有行,他不想计算(他们说“隐藏”),代码将隐藏它们。我认为有必要解释一下你做了什么,以及你为什么这么做,以便OP可以根据需要获取信息。