意外的App_Sheet_SelectionChange行为

时间:2013-01-18 09:07:00

标签: vba

我有一个包含两个项目的自定义菜单:“开”和“关”。 “On”项调用Add-In函数来初始化某些功能(十字准线)。在按下“开”项后,我希望看到每个选择更改时的十字准线移动(即单击一个单元格并突出显示相应的行/列)。因此,我在Worksheet_SelectionChange()中实现了一些功能,并且启用了功能On会使Worksheet_SelectionChange()中的代码执行某些操作。但是,Worksheet_SelectionChange是特定于工作表的,我希望跨工作表使用此功能,而不必将代码添加到我想要使用十字准线的每个工作表。所以,我到达了应用程序事件。因此,我宣布

Public WithEvents App As Application 

Public Sub Auto_Open()
   Set App = Application
End Sub  

Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
   Call DrawCrossHair(...)
End Sub

只要我不将Excel单击到另一个应用程序中,一切都很酷。一旦发生这种情况,App将重置为Nothing,并且App_SheetSelectionChange不会被调用,因为每个"Excel_getFocus"都不会调用Auto_Open。如何防止App重置?或者我使用错误的工具(App Events)来实现我想要实现的目标?

非常感谢, 丹尼尔

0 个答案:

没有答案