哪个窗口处于活动状态

我有一个简短的macros,使用命令将单元格置于编辑模式:

Application.SendKeys "{F2}" 

如果使用正常的Ribbon界面从工作表运行macros(这是因为F2将活动单元格置于Edit模式)

如果我从VBE窗口运行macros,macros将失败,因为VBEF2解释为调出对象浏览器的命令。

我想在macros中包含一个testing来检查这个:

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

我不知道如何确定哪个窗口是活动的。 ActiveWindow.Caption总是显示如下所示:

 Book1.xlsm 

我想你不幸遇到了一个VBE问题。 如果解决scheme是为了避免在编码时出错,这是否适合您? 看来没有办法看到activewindow是否是我能find的VBE。 如果此解决scheme不能满足您的需求, 在WHS中使用VBS可能会为您工作或调用像autoit这样的外部程序。

请注意,如果您正在逐步完成代码,那么它将不起作用,但是我认为您确实主要关心的是从VBE窗口中点击运行button,并且可以正常工作。 把第一行放在代码的最上面,或者放在带有sendkeys或者什么的部分之前。

 ThisWorkbook.VBProject.VBE.MainWindow.Visible = False If ActiveWindow.Caption <> "Book1.xlsm" Then MsgBox ("Test") Else MsgBox ("testelse") 

你将无法退回,必须按Alt-F11