Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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
Excel 在工作表的多个区域中隐藏没有数据的行_Excel_Vba - Fatal编程技术网

Excel 在工作表的多个区域中隐藏没有数据的行

Excel 在工作表的多个区域中隐藏没有数据的行,excel,vba,Excel,Vba,我最近刚刚开始使用这个代码 Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Application.ScreenUpdating = False With Range("G24:G71,N24:N71") Dim r As Long: For r = 1 To .Areas(1).Rows.Count Dim bHide As Boolean: bHide

我最近刚刚开始使用这个代码

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Application.ScreenUpdating = False
    With Range("G24:G71,N24:N71")
        Dim r As Long: For r = 1 To .Areas(1).Rows.Count
            Dim bHide As Boolean: bHide = True
            Dim xArea As Range: For Each xArea In .Areas
                If IsEmpty(xArea.Cells(r, 1).Value) = False Then
                    bHide = False
                End If
            Next xArea
            .Rows(r).EntireRow.Hidden = bHide
        Next r
    End With
    Application.ScreenUpdating = True
End Sub
但是,我希望代码可以查看多个区域。我尝试了以下方法,但不起作用

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Application.ScreenUpdating = False
    With Range("G24:G71,N24:N71")
        Dim r As Long: For r = 1 To .Areas(1).Rows.Count
            Dim bHide As Boolean: bHide = True
            Dim xArea As Range: For Each xArea In .Areas
                If IsEmpty(xArea.Cells(r, 1).Value) = False Then
                    bHide = False
                End If
            Next xArea
            .Rows(r).EntireRow.Hidden = bHide
        Next r
    End With
    Application.ScreenUpdating = True
End Sub

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Application.ScreenUpdating = False
    With Range("G81:G124,N81:N124")
        Dim r As Long: For r = 1 To .Areas(1).Rows.Count
            Dim bHide As Boolean: bHide = True
            Dim xArea As Range: For Each xArea In .Areas
                If IsEmpty(xArea.Cells(r, 1).Value) = False Then
                    bHide = False
                End If
            Next xArea
            .Rows(r).EntireRow.Hidden = bHide
        Next r
    End With
    Application.ScreenUpdating = True
End Sub
我得到以下错误消息

编译错误:检测到不明确的名称:工作表\数据透视表更新

它还突出显示第二个代码字符串的第一行

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

如果您能提供任何帮助,我们将不胜感激。

我认为这应该是可行的,假设您的代码按照您当前的意愿运行

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Application.ScreenUpdating = False
    With Range("G24:G71,N24:N71")
        Dim r As Long: For r = 1 To .Areas(1).Rows.Count
            Dim bHide As Boolean: bHide = True
            Dim xArea As Range: For Each xArea In .Areas
                If IsEmpty(xArea.Cells(r, 1).Value) = False Then
                    bHide = False
                End If
            Next xArea
            .Rows(r).EntireRow.Hidden = bHide
        Next r
    End With
    With Range("G81:G124,N81:N124")
        For r = 1 To .Areas(1).Rows.Count
            bHide = True
            For Each xArea In .Areas
                If IsEmpty(xArea.Cells(r, 1).Value) = False Then
                    bHide = False
                End If
            Next xArea
            .Rows(r).EntireRow.Hidden = bHide
        Next r
    End With
    Application.ScreenUpdating = True
End Sub

抱歉,我忘了添加错误消息。已编辑。因此,问题是同一工作表不能有多个相同事件。你需要把你的两段代码合并成一段。你有什么想法吗。我已经试过了,但似乎无法让它发挥作用。你能不能把第二个With子句放在第一个之后?你可能需要在中间重新设置BRID。或者只是通过范围G24:G71、N24:N71、G81:G124、N81:N124来扩展您的范围。重置bHide是什么意思?我曾尝试扩大范围,但我认为,因为72:81单元格中有空白行,我不想隐藏,所以它不起作用。我认为它需要作为两个独立的论点站起来。谢谢你抽出时间!