【问题标题】:Code works in Excel Modules but not in ThisWorkbook module.代码在 Excel 模块中有效,但在 ThisWorkbook 模块中无效。
【发布时间】:2016-08-27 02:53:19
【问题描述】:

我有一段非常简单的 VBA 代码来复制单元格的值,打开另一个工作簿,然后将该单元格的值粘贴到新打开的工作簿中。它在普通模块中完美运行。但是当我运行ThisWorkbook模块中的代码时,为了在保存文件时触发它,另一个工作簿将不会打开。然而,像打开 MsgBox 这样更简单的宏在 ThisWorkbook 中可以正常工作。另一个奇怪的事情是,如果我正在查看代码,代码确实可以在 ThisWorkbook 中工作。有谁知道为什么会发生这种情况?我正在运行 Excel 2010。

代码如下:

Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim rangetocopy As String
Dim w1 As Workbook
Dim w2 As Workbook

Set w1 = ActiveWorkbook
Calculate

rangetocopy = w1.Sheets("Reference Data").Range("F10").Value

Set w2 = Workbooks.Open("C:\Users\user1\Documents\To-Do.xlsm")

w2.Worksheets("Masterlist").Activate
Range("A1").Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.Value = rangetocopy

w1.Worksheets("To-do List").Activate

End Sub

有什么想法吗?

【问题讨论】:

  • 事件触发时从模块调用子程序。
  • 如果您在Set w1 = ActiveWorkbook 行上放置一个断点 (F9),然后按 Ctrl+S... 是否会触发断点? FWIW 与SelectActivate 合作远非理想;考虑找出其他方法来做你的事情。
  • Set w1 = ActiveWorkbook 应该是 Set w1 = ThisWorkbook 在工作簿未打开时您是否看到任何错误?
  • 如果工作簿无法打开,那么应该会引发错误:代码不应该在下一行失败。也许工作簿确实打开了但您没有看到它(它是隐藏的吗?) - 它是否出现在 VB 编辑器的项目树中?顺便说一句,如果您在评论中包含@timwilliams,我会收到通知...
  • 我无法解释:如果工作簿打开,那么它应该在树中 - 如果它没有打开,那么应该会引发错误。尝试在Open 行之后直接添加MsgBox w2.Sheets.Count:它运行时你会看到什么?

标签: vba excel excel-2010


【解决方案1】:

问题是由名为 WorkSite 的第 3 方加载项引起的。一旦我断开连接,宏就可以正常工作。

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 2020-06-15
    • 2017-12-29
    • 1970-01-01
    • 2023-03-31
    • 2016-12-01
    相关资源
    最近更新 更多