疑难解答为什么VBA停止运行中macros,并从未完成执行

正如标题所示,我正在运行下面的macros。 奇怪的是,msgBox从来不会以“结束时间”提示我,也不会在macros停止运行时popup错误消息。 在文件夹中的数据是非常直接的东西,但有大约一千个文件的历史

任何指示如何麻烦拍这个自己? 这是我需要改进的地方,所以build议如何解决这个问题会很好。

Sub AbesLoop() Dim wbk As Workbook Dim ws As Integer Dim Filename As String Dim path As String Dim rCell As Range Dim rRng As Range Dim wsO As Worksheet Dim StartTime As Double Dim SecondsElapsed As Double Dim sheet As Worksheet Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual StartTime = Timer 'On Error Resume Next path = "PATHtoStuff" & "\" Filename = Dir(path & "*.xl??") Set wsO = ThisWorkbook.Sheets("Sheet1") Do While Len(Filename) > 0 DoEvents Set wbk = Workbooks.Open(path & Filename, True, True) ws = wbk.Worksheets.count 'For i = 1 To ws For Each sheet In ActiveWorkbook.Worksheets If sheet.Index > 1 Then Set rRng = Range("b1:b308") For Each rCell In rRng.Cells If rCell <> "" And rCell.Value <> "Not Tested" And rCell.Value <> 0 Then wsO.Cells(wsO.Rows.count, 1).End(xlUp).Offset(1, 0).Value = rCell wsO.Cells(wsO.Rows.count, 1).End(xlUp).Offset(0, 1).Value = rCell.Offset(0, -1) wsO.Cells(wsO.Rows.count, 1).End(xlUp).Offset(0, 2).Value = Mid(Right(ActiveWorkbook.FullName, 15), 1, 10) End If Next rCell End If Next 'Next i wbk.Close False Filename = Dir Loop Application.ScreenUpdating = True Application.DisplayAlerts = True Application.Calculation = xlCalculationAutomatic SecondsElapsed = Round(Timer - StartTime, 2) MsgBox "This code ran successfully in " & SecondsElapsed & " seconds", vbInformation End Sub 

编辑:事实certificate,对于一些reasom循环代码正在看工作表选项卡1.我改变了代码尝试和解释,但由于某种原因仍在看第一页。 该错误是在第一张(我不断试图绕开)仪表盘上的“不匹配types”,一直运行到公式错误。

在作为应用程序的一部分的VBA中工作时,使用应用程序提供的对象是非常重要的,而不是泛化的Selection或ActiveWorkbook等。这个代码是这样做的,这是很好的:-)

但是,与此同时,VBA需要能够唯一地识别它应该工作的对象。 使用“select”或“活动[事]”这是没有必要的,所以这一步是不容易使用macroslogging器学习。

在这个问题的代码的情况下

 Set rRng = Range("b1:b308") 

对于从哪张工作表中读取范围,Excel并不清楚,所以它默认工作簿中的第一张工作表。 相反,使用:

 Set rRng = sheet.Range("b1:b10")"