首页 > 解决方案 > 循环浏览工作表时出错。返回对象变量或未设置块变量

问题描述

我成功地遍历工作表,直到最后一个工作表出现对象变量错误和下标超出范围错误。

我相信问题可能出在 ActiveSheet.Next.Select 用完工作表时。(见代码)。我使用此处和其他站点的代码尝试了几种循环方法,但均未成功。我无法使用 ThisWorkbook,因为循环正在另一个工作簿上完成。

Dim WS As Worksheet

   For Each WS In Worksheets

       LastRow = Cells(Rows.Count, "A").End(xlUp).Row
       For i = LastRow To 16 Step -1
                If Cells(i, 1) = "Actual:" Or Cells(i, 1) = "" Then
                'Delete Rows containing Actual: or empty rows
                Rows(i).EntireRow.Delete
            End If
        Next i
        ActiveSheet.Next.Select

   Next WS

这完成了准备工作簿以复制剩余行,这是在另一个过程中。

标签: excelvbafor-loop

解决方案


像这样的东西应该可以工作 - 请注意最好避免使用 ActiveSheet/ActiveCell 等

Dim WS As Worksheet 

For Each WS In Worksheets
    For i = WS.Cells(WS.Rows.Count, "A").End(xlUp).Row To 16 Step -1
        If WS.Cells(i, 1) = "Actual:" Or WS.Cells(i, 1) = "" Then
            'Delete Rows containing Actual: or empty rows
             WS.Rows(i).EntireRow.Delete
        End If
    Next i
Next WS

推荐阅读