vba - 运行时 440 Excel 错误删除 VBA 中的选定行

标签 vba excel excel-2010

编辑:所以我尝试手动执行此代码中的操作,并且 excel 也崩溃了。这是否意味着我遇到了与其他海报相同的崩溃错误?

作为序言,公平的警告我不是一个专业的程序员,我只是玩这个来试图让我(和我的同事)的生活更轻松一些。

这段代码在我一个月前制作时正在运行,也许它被更新破坏了,不确定,但我不确定为什么它现在会抛出错误。我拥有的另一个非常相似的宏仍然有效。

现在抛出 错误 440 ,然后,MS Excel 将崩溃。

Sub RemoveRow()
    Dim Eng As Worksheet
    Dim rmg As Range
    Dim Sup As Worksheet

    Application.ScreenUpdating = False

       '~~> Set this to the relevant worksheet
    Set Eng = ThisWorkbook.Sheets("Engr+Tech")
    Set Sup = ThisWorkbook.Sheets("Suprv+Sppt")

    Eng.Activate

With Eng

    Range("D8").End(xlDown).Select

    '~~> Set your range
    Set rmg = .Rows(ActiveCell.Row)

    '~~> Delete the range
    rmg.Delete

    '~~> Select last row
    Set rmg = .Rows(ActiveCell.Row)
    rmg.Offset(-1).Select

    '~~> Select techs
    Cells(Selection.Row, 4).End(xlDown).Select
    Cells(Selection.Row, 4).End(xlDown).Select

     '~~> Set your range
    Set rmg = .Rows(ActiveCell.Row)

    '~~> Delete the range
    rmg.Delete

    '~~> Select last row
    Set rmg = .Rows(ActiveCell.Row)
    rmg.Offset(-1).Select

    '~~> Select ftechs
    Cells(Selection.Row, 4).End(xlDown).Select
    Cells(Selection.Row, 4).End(xlDown).Select

     '~~> Set your range
    Set rmg = .Rows(ActiveCell.Row)

    '~~> Delete the range
    rmg.Delete

End With

Sup.Activate

With Sup

    Range("D8").End(xlDown).Select

    '~~> Select CLS
    Cells(Selection.Row, 4).End(xlDown).Select
    Cells(Selection.Row, 4).End(xlDown).Select

     '~~> Set your range
     '~~> Set rmg = .Rows(ActiveCell.Row)

    '~~> Delete the range
    .Rows(ActiveCell.Row).Delete

End With

Eng.Activate

Range("A1").Select

Application.ScreenUpdating = True


End Sub

最佳答案

尝试不使用所有选择/激活

Sub RemoveRow()

    Dim Eng As Worksheet
    Dim rmg As Range
    Dim Sup As Worksheet

    Application.ScreenUpdating = False

    '~~> Set this to the relevant worksheet
    Set Eng = ThisWorkbook.Sheets("Engr+Tech")
    Set Sup = ThisWorkbook.Sheets("Suprv+Sppt")

    '>> avoiding deleting the cell referenced by rmg...
    Set rmg = Eng.Range("D8").End(xlDown).Offset(-1, 0)
    rmg.Offset(1, 0).EntireRow.Delete

    Set rmg = rmg.End(xlDown).End(xlDown).Offset(-1, 0)
    rmg.Offset(1, 0).EntireRow.Delete

    Set rmg = rmg.End(xlDown).End(xlDown).Offset(-1, 0)
    rmg.Offset(1, 0).EntireRow.Delete

    Sup.Range("D8").End(xlDown).End(xlDown).End(xlDown).EntireRow.Delete

    Eng.Activate
    Eng.Range("A1").Select

    Application.ScreenUpdating = True

End Sub

关于vba - 运行时 440 Excel 错误删除 VBA 中的选定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43077779/

相关文章:

vba - MS Access - 导出页面设置

excel - 我可以限制用户从不受支持的 Excel 版本保存文件吗?

excel - Excel 上的 VBA 仅使用一个处理器,如何使用更多处理器?

java - Apache-POI 生成 8kb 的小工作簿,需要几分钟才能完成

c# - 使用 Excel Interop 扩展公式范围

excel - 将不同工作簿中的范围复制到一张最终目标工作表中

excel - 如何使用 ActiveSheet 变量?

excel - 尝试在事件工作簿中引用另一个工作表

Excel VBA "End If without block If"- VBA 错误

Excel 公式简单除以 2 个单元格,使用 =+