【问题标题】:VBA code restarting halfway through without error messageVBA代码中途重新启动没有错误消息
【发布时间】:2015-07-20 12:24:46
【问题描述】:

我有下面的代码,它似乎工作正常,但是在它进行到一半时,它会在我调试代码时停止并重新启动。

当它重新启动时不会显示任何错误消息。有谁知道我的代码为什么会这样?

Sub ExportPICs()

If FileIsOpen("U:\FBS\PROJECTS_TEAM\MI\Sean's Projects\PICS and Benefits\Pics & Benefits upload file.xlsm") Then
    MsgBox "That file's open, or doesn't exist - do something else."
    Exit Sub
    End If

Sheets("Post Implementation Costs").Visible = True
Sheets("Post Implementation Costs").Activate
Sheets("Post Implementation Costs").Unprotect Password:="Projects123"

Dim Tracker As String
Tracker = ThisWorkbook.Name

Dim wkbk As Excel.Workbook
Set wkbk = Workbooks.Open(Filename:= _
"U:\FBS\PROJECTS_TEAM\MI\Sean's Projects\PICS and Benefits\Pics & Benefits upload file.xlsm") '***********CODE RESTARTS HERE WITHOUT ERROR MESSAGE

Dim pics As String
pics = Dir("U:\FBS\PROJECTS_TEAM\MI\Sean's Projects\PICS and Benefits\Pics & Benefits upload file.xlsm")


Workbooks(Tracker).Activate
Sheets("Post Implementation Costs").Activate

Dim rng As Range
Dim CountTrue As Long
Set rng = Range("D16:D100")
CountTrue = Application.WorksheetFunction.CountIf(rng, "PIC")

If CountTrue > 0 Then
Rows("19:" & (CountTrue + 18)).EntireRow.Copy
End If

End Sub

【问题讨论】:

  • 如果他们在 Pics & Benefits 的打开事件中上传 file.xlsm 中的任何代码?
  • 否,“图片和福利上传文件.xlsm”目前是免费的宏。
  • 如何触发这段代码?
  • 我在不同的文件中触发此代码 - 在代码“跟踪文件”中引用

标签: vba excel error-handling


【解决方案1】:

如果您在“Pics & Benefits upload file.xlsm”中的 Workbook Open Event 中有任何可以执行循环的代码。

试试Application.EnableEvents = False

之前

Dim wkbk As Excel.Workbook
Set wkbk = Workbooks.Open(Filename:= _
"U:\FBS\PROJECTS_TEAM\MI\Sean's Projects\PICS and Benefits\Pics & Benefits upload file.xlsm")

之后您可以通过Application.EnableEvents = True再次激活它

此代码停止调用 Excel 事件处理程序。将其设置为 false 通常是因为事件处理程序的效果不理想或防止无限循环。

【讨论】:

  • 我在运行宏的文件中有一个打开的工作簿事件,但在我用这行代码打开的工作簿中没有。不幸的是,事件处理程序行不起作用:(
  • 我已经稍微调整了您的解决方案,并将 Application.EnableEvents = False 放在第二页上的宏中。这已经解决了问题感谢您的帮助!!非常感谢!
【解决方案2】:

我也发现,对于某些语句,Step 命令不会单步执行,而是让以下所有代码运行。为避免这种情况,请在步骤混淆的下一行设置断点。

【讨论】:

  • 多么奇怪,这似乎有效:) 我对断点的了解有限,有什么方法可以使它们永久化,因为当我关闭文件并重新打开它时,断点消失了,从而导致了问题重新出现。
  • 你可以使用“停止”语句
  • 谢谢,不过我的宏是受密码保护的 :( 有没有办法解决这个问题,即使用 stop 语句和宏在我的同事不进入模块的情况下自行重启。
猜你喜欢
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 2013-06-09
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
相关资源
最近更新 更多