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单元格中有空白行,我不想隐藏,所以它不起作用。我认为它需要作为两个独立的论点站起来。谢谢你抽出时间!