我有一些代码在没有明显原因的情况下停止执行而且没有生成错误。这可能是记忆问题吗?它正在运行的工作表有大约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
答案 0 :(得分:0)
我对wholerow.insert有同样的问题。在编辑我的代码或注释行之后,我的第一次执行只会出现问题(没有更改任何有意义的内容)。我的原始工作簿是一个.xltm文件,但保存为常规.xlsm由于某种原因解决了这个问题。
答案 1 :(得分:0)
好的,现在我想我可能有一个答案(或者至少是一种解决方法)。如上所述,我认为它可能与剪贴板有关。所以在复制指令之前,我插入了
Application.CutCopyMode = False
现在问题已经消失了。
答案 2 :(得分:0)
我90%确定这是Excel中的错误。我在多个宏上遇到了问题,即使所有其他因素都不变,它也是不一致的;重新运行通常只是起作用。在长期运行的宏中它也更有可能。
它不是 name table latest_table Date
1 george table1 t459 2017-08-24
2 john table1 thi7 2017-07-23
3 mary table1 gdr99 2017-07-22
,因为它位于消息框之后。这不是缺少错误处理,因为如果存在未处理的错误,VBA应该中断(并且确实)。错误也是可重现的。
我找到的最佳工作是在“主要”工作表上输出开始和结束时间。如果用户没有得到结束时间,则假定宏过早停止。