0

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

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
4

3 回答 3

0

OK, now I think I might have an answer (or at least a workaround). As I indicated above, I thought it might be related to the clipboard. So immediately before the copy instruction, I inserted

Application.CutCopyMode = False

and the problem has now gone away.

于 2014-07-05T17:03:36.863 回答
0

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

于 2014-05-21T21:56:01.723 回答
0

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

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

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

于 2017-08-24T15:49:20.397 回答