【问题标题】:Excel VBA stops without error messageExcel VBA 停止而没有错误消息
【发布时间】:2013-06-09 00:54:59
【问题描述】:

我有一些代码无缘无故停止执行,也没有产生错误。会不会是内存问题?它正在操作的工作表大约有 1600 行,其中包含大量格式和条件格式,并且代码在插入一行后停止。这是停止的代码sn-p:

With wsBudget
    TotalColumn = .Range("TotalColumn").Column
    FormulaColumn = .Range("FormulaColumn").Column

    If .Cells(lRow, 1).Interior.Color <> 14408946 Then  'OK to insert
        cell.EntireRow.Copy
        cell.Resize(RowCount, 1).EntireRow.Insert  'It stops after stepping into this line
        .Cells(cell.Row - RowCount, 1).EntireRow.ClearContents
        .Cells(cell.Row - RowCount - 1, FormulaColumn).Resize(RowCount + 1, 1).FillDown
        .Cells(cell.Row - RowCount - 1, TotalColumn).Resize(RowCount + 1, 1).FillDown
        .Cells(cell.Row - RowCount - 1, 1).Resize(RowCount, 1).Interior.Color = RGB(255, 255, 255) 'OK to insert or delete
    Else
        MsgBox "You must select a cell within a table before inserting a row."
        Exit Sub
    End If

End With

【问题讨论】:

  • 调查Exit Sub 的工作原理、它的作用以及它何时出现在您的代码中。我建议逐步完成调试过程
  • 您需要在代码中包含错误处理程序。如果您使用过On error resume next,请将其删除。 '改为使用On error goto err_location: 并将其路由到标签。使用Err 对象,您可以检查问题。
  • 也是,我不确定它是否是故意的,但是,停止的行和之前的行的引用不合格。应该是一个。 (点)在单元格关键字前面(注意大小写差异)。
  • @mehow:它没有到达 Exit Sub 行。我的代码在停止执行的那一行有一条注释:它是 ....entirerow.insert 行。
  • @Santosh:正如我在问题中所说,它不会产生错误,因此错误处理对我没有帮助。我知道它不会产生错误,因为我确实尝试过错误 goto。

标签: excel vba


【解决方案1】:

我对 wholerow.insert 也有同样的问题。在我编辑了我的代码或注释行(没有改变任何有意义的内容)之后,我的第一次执行才出现这个问题。我的原始工作簿是一个 .xltm 文件,但将其保存为常规 .xlsm 解决了问题。

【讨论】:

    【解决方案2】:

    好的,现在我想我可能有一个答案(或者至少是一个解决方法)。正如我上面指出的,我认为它可能与剪贴板有关。所以在复制指令之前,我插入了

    Application.CutCopyMode = False
    

    现在问题已经解决了。

    【讨论】:

      【解决方案3】:

      我 90% 确定这是 Excel 中的一个错误。我在多个宏上遇到过问题,即使所有其他因素都不变,它也是不一致的;重新运行通常可以正常工作。在长时间运行的宏上也更有可能。

      不是Exit Sub,因为它跟在消息框后面。这并不是缺少错误处理,因为如果存在未处理的错误,VBA 应该会中断(并且确实会中断)。错误也是可以重现的。

      我发现的最佳解决方法是在“主”工作表上输出开始和结束时间。如果用户没有得到结束时间,则假定宏已过早停止。

      【讨论】:

        猜你喜欢
        • 2018-05-16
        • 1970-01-01
        • 2015-06-28
        • 2017-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-22
        相关资源
        最近更新 更多