【问题标题】:Active workbook is randomly changed after macro execution宏执行后活动工作簿随机更改
【发布时间】:2016-07-28 05:50:26
【问题描述】:

在我运行一个宏(从 sql server 中选择记录,不引用另一个工作簿)后,其他打开的工作簿之一被随机激活。
宏在 book1 中,我从 book1 运行宏。
最后, book2(或 book3 等)被激活。为什么?!
我试着在 End Sub 之前放

Dim Wb As Workbook  
Set Wb = Active/ThisWorkbook  
Wb.Activate   

msgbox "ok"  

但仍会飞到另一个打开的工作簿(在 book2 上弹出消息框)
这件事并非每次都会发生,只是有时会随机发生。 谢谢你

更新:由于我在 book2 中修复了循环引用,因此似乎停止了。

【问题讨论】:

  • 宏是否将结果放入新书?
  • Debug.Print Wb.Name 返回什么?
  • 您是否尝试过关注 Application.Activeworkbook 并在更改时中断,不确定这是否有效,因为无法在 mo 进行测试。
  • 我认为这是因为Set Wb = Activeworkbook 将 Wb 变量设置为在运行宏之前处于活动状态的工作簿。请改用Set Wb = ThisWorkbook

标签: vba excel macros


【解决方案1】:

See Difference Between ActiveWorkbook and ThisWorkbook

Sub Bus()
Dim Wb As Workbook
Set Wb = ActiveWorkbook
Debug.Print Wb.Name

Set Wb = ThisWorkbook
Debug.Print Wb.Name


End Sub

如果你把上面的代码放在 Book2 中。模块 1 并选择 Book1 并运行它

您将在即时窗口中获得以下输出:

Book1
Book2

【讨论】:

  • 我得到 book1,无论是 activeworkbook 还是 thisworkbook。
  • 能否贴出设置截图和完整代码(如果有)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多