如何修复VBA中没有响应

use*_*861 0 excel vba excel-vba

如何修复Not RespondingExcel VBA中的错误?

我的代码很完美,没有出现任何错误,但是运行它之后,我将看到NOT RESPONDINGExcel VBA的顶部,并且Excel不再响应。

我正在编写VBA代码以查找两张纸之间的匹配数字:Sheet1持有5000个数字和Sheet2持有4500个数字。当我运行它时,我的代码将其运行10秒钟,然后擅长冻结我,并且没有响应的味精出现在屏幕顶部。

现在,当我仅比较两张纸之间的100个数字时,它的工作正常且没有响应MSG的现象就不会出现,只有当我将10000个数字或数量较大的数字进行比较时,才会出现这种情况。

当我只比较100个数字,但是当我尝试在两张纸之间做更大的数字时,此代码再次正常运行,对我没有响应并出现冻结。...这是我的代码,我尝试过SCREENUPDATE或其他做活动,不要帮助...如果有人帮助我,我将不胜感激。谢谢

     Dim Sheet1rows As Long, Sheet2rows As Long, a as long, j as long
      j = 1
      a = 1
      Sheet1rows = Sheets("Sheet1").UsedRange.Rows.Count + 1
      Sheet2rows = Sheets("Sheet2").UsedRange.Rows.Count + 1

     For i = a To Sheet1rows
       For ii = a To Sheet2rows

    'this one is copying between to sheets

        If Sheets("Sheet1").Cells(i, 1) = Sheets("Sheet2").Cells(ii, 1) Then
         Sheets("Sheet3").Range("A" & j) = Sheets("Sheet1").Cells(i, 1)
        j = j + 1
       next ii
     next i
Run Code Online (Sandbox Code Playgroud)

Tan*_*ner 5

您已经有了一些非常出色的答案,可以使您的代码变得更好。我只想添加一件事。

如果只想使程序不冻结,则添加

DoEvents
Run Code Online (Sandbox Code Playgroud)

在每个循环中位于自己的行上。

我也建议添加

Application.StatusBar = "Updating" & (i)
Run Code Online (Sandbox Code Playgroud)

以便您至少可以查看它是否有效。