哪个窗口有效

时间:2016-07-10 16:21:05

标签: excel vba excel-vba

我有一个短宏,使用以下命令将单元格置于编辑模式:

Application.SendKeys "{F2}"

如果使用正常的Ribbon接口(因为 F2 将活动单元格置于编辑模式)从工作表运行宏,则代码行正常运行

如果我从 VBE 窗口运行宏,宏会失败,因为 VBE 解释 F2 是一个命令来调出对象浏览器。

我想在宏中包含一个测试来检查:

如果工作表是活动窗口,请继续运行。
如果VBE是活动窗口,则发出警告MsgBox并中止。

我不知道如何确定哪个窗口处于活动状态。 ActiveWindow.Caption始终显示如下内容:

Book1.xlsm

1 个答案:

答案 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