我有一个短宏,使用以下命令将单元格置于编辑模式:
Application.SendKeys "{F2}"
如果使用正常的Ribbon接口(因为 F2 将活动单元格置于编辑模式)从工作表运行宏,则代码行正常运行
如果我从 VBE 窗口运行宏,宏会失败,因为 VBE 解释 F2 是一个命令来调出对象浏览器。
我想在宏中包含一个测试来检查:
如果工作表是活动窗口,请继续运行。
如果VBE是活动窗口,则发出警告MsgBox并中止。
我不知道如何确定哪个窗口处于活动状态。 ActiveWindow.Caption
始终显示如下内容:
Book1.xlsm
答案 0 :(得分:5)
我认为你不幸遇到了VBE问题。如果解决方案是为了避免在编码时出错,这对你有用吗?它似乎没有办法看出活动窗口是否是我能找到的VBE。如果此解决方案无法满足您的需求,Using VBS in WHS可能适合您或调用autoit等外部程序。
请注意,如果您正在逐步执行代码,它将无法正常工作,但我认为您真的主要关注的是从VBE窗口中点击运行按钮,它将适用于此。将第一行放在代码顶部或在使用sendkeys或whatnot的部分之前。
ThisWorkbook.VBProject.VBE.MainWindow.Visible = False
If ActiveWindow.Caption <> "Book1.xlsm" Then MsgBox ("Test") Else MsgBox ("testelse")
你无法使用alt-tab返回,必须按Alt-F11