一些我只想从即时窗口运行的潜艇,比如这个有点冒险的潜艇:
Public Sub clear()
Application.SendKeys "^a", True
Application.SendKeys "{delete}", True
End Sub
万一你无法解决;它向应用程序发送ctrl+a和Del,并具有清除当时光标周围的任何内容的效果。
我通过键入在即时窗口中使用它,即时窗口clear
中的所有内容都被删除。
正如您可能知道的那样,这个 Sub 非常危险并且相对容易意外调用。因此,我希望它仅在从即时窗口调用时运行
- 不是来自另一个子
- 不是来自表单控件
- 不是来自 ActiveX(虽然这实际上只是一个子)
- 不是来自用户调用(通过开发人员/宏选项卡)
而且也不是来自任何其他来源(我已经列出了所有这些,因为我认为即使您不能直接判断它是由即时窗口调用的,您也可以通过排除其他选项来间接判断)
这可能以编程方式进行吗?理想情况下,我只想在我的clear()
sub 开始时进行一个简单的布尔检查,告诉它什么都不做,除非被即时窗口调用。
注意
一种方法可能是通过使用调用堆栈(ctrl+L打开对话框),因为我注意到立即调用在堆栈中没有留下任何痕迹,而 subs 调用clear()
被列出,因此可以排除。但我不确定如何通过 VBA 访问它