Vba Excel VB-Foreach循环内部的Foreach循环(循环工作表,删除空行)

Vba Excel VB-Foreach循环内部的Foreach循环(循环工作表,删除空行),vba,excel,foreach,Vba,Excel,Foreach,我对VB很陌生,有一个可能很简单的问题——我需要浏览工作簿中的所有工作表,删除分散在周围的所有图表,选择有数据的最后一行,向后移动并删除空行。我尝试了从StackOverflow甚至MS站点组装的东西,但似乎没有任何效果 Sub DeleteChartsRowsAllSheets() Dim Ws As Worksheet, chtObj As ChartObject, i As Long For Each Ws In ThisWorkbook.Worksheets

我对VB很陌生,有一个可能很简单的问题——我需要浏览工作簿中的所有工作表,删除分散在周围的所有图表,选择有数据的最后一行,向后移动并删除空行。我尝试了从StackOverflow甚至MS站点组装的东西,但似乎没有任何效果

Sub DeleteChartsRowsAllSheets()
Dim Ws As Worksheet, chtObj As ChartObject, i As Long

    For Each Ws In ThisWorkbook.Worksheets

            For Each chtObj In Ws.ChartObjects
            chtObj.Delete

            Next
        'We turn off calculation and screenupdating to speed up the macro.
        With Application

        'Turn off screen updating and calculation
        .Calculation = xlCalculationManual
        .ScreenUpdating = False

            For i = Selection.Rows.Count To 1 Step -1

                If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
                    Selection.Rows(i).EntireRow.Delete
                End If

            Next i

        'Turn screen updating and calculation back on
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True

        End With

    Next Ws
端接头

有什么建议吗

在嵌套循环中将ActiveSheet.ChartObjects替换为ws.ChartObjects


您当前仅删除活动表上的图表。

太棒了,它可以正常工作!这是否需要通过表单的循环部分,或者我可以省略下一个Ws部分?