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)
您已经有了一些非常出色的答案,可以使您的代码变得更好。我只想添加一件事。
如果只想使程序不冻结,则添加
DoEvents
Run Code Online (Sandbox Code Playgroud)
在每个循环中位于自己的行上。
我也建议添加
Application.StatusBar = "Updating" & (i)
Run Code Online (Sandbox Code Playgroud)
以便您至少可以查看它是否有效。