代码在debugging时运行良好,但在完全执行期间崩溃

我有一行代码在debugging时完美运行,但在完全执行时一直崩溃。 基本上它应该做的是组合两行数据。 我这样做是因为我从数据库导入数据,在该数据库中,它将事务logging在两行中:事务的一侧在一行上,而另一侧在另一行上,前一列的所有数据是位于这些行中的任何一行上。 举个例子:

 |反转1 |  1/1/2015 |  $ 500.00 |  0

 |反转1 | --------- |  0 |  497.00 |

理想情况下,应该看起来像

 |反式1 | 1/1/2015 | 500.00 | 497.00 |

第二行应该被删除。

这是我的代码来做到这一点:

Sub Collapse_Rows() Dim ALLCS As Worksheet Set ALLCS = Sheets("Asset LLC (Input)") On Error Resume Next Application.EnableEvents = False For x = 66515 To 16 Step -1 If ALLCS.Cells(x, 2) = ALLCS.Cells(x + 1, 2) Then If ALLCS.Cells(x, 28) <> Empty Then ALLCS.Cells(x + 1, 28) = ALLCS.Cells(x, 28) End If End If If ALLCS.Cells(x - 1, 2) = ALLCS.Cells(x, 2) Then If ALLCS.Cells(x, 28) <> Empty Then ALLCS.Cells(x - 1, 28) = ALLCS.Cells(x, 28) End If End If If ALLCS.Cells(x, 5) <> Empty And ALLCS.Cells(x, 2) = Empty Then ElseIf ALLCS.Cells(x, 24) = Empty Then ALLCS.Cells(x, 24).EntireRow.Select Selection.Delete End If Next End Sub 

我在debugging时部分运行了这段代码,效果很好。 当我完全运行代码时,excel会崩溃,为什么/如何防止这种情况发生?

乍一看,这个问题的一个主要部分似乎在于代码本身在某种程度上是资源密集型的。

首先,从第66515行开始。有没有从这里开始的原因? 这意味着在大多数情况下,将会有大约33,250行删除执行(从16 – > 66515每隔一行)。 这将需要很长时间,在很多情况下,Excel将无法响应。

几个选项。

确定你是否真的需要在第66515行开始循环。这是一个固定的起点,原因是什么? 如果不是,请使用代码确定实际数据集的最后一行并从那里开始。

另外,在代码的开始处,使用以下SceenUpdatingclosuresSceenUpdatingApplication.ScreenUpdating = False 。 在代码结束时,使用Application.ScreenUpdating = True将其重新打开