宏执行后活动工作簿随机更改
Posted
技术标签:
【中文标题】宏执行后活动工作簿随机更改【英文标题】: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
。
【参考方案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。 能否贴出设置截图和完整代码(如果有)?以上是关于宏执行后活动工作簿随机更改的主要内容,如果未能解决你的问题,请参考以下文章