在用户操作时向程序追加程序

说,我有一个程序,根据select的变化,改变一个单元格的随机颜色。 我知道我可以在工作表SelectionChange事件的过程中进行编码。

我想我问,因为在JavaScript我们可以使用addEventListeners ,我们可以在Excel VBA中做类似的事情。

在这里输入图像说明

我想知道的是,这可以dynamic地完成吗? 也就是说,当用户select一个选项时,我将一个过程绑定到工作表的事件SelectionChange

请注意,我知道我可以声明一个全局布尔值并使用它来确定用户操作并在我的SelectionChange事件过程中使用它。

林只是好奇,是否在Excel VBA中,我们可以dynamic地附加程序事件?

您不能dynamic分配事件处理程序。 Excel将始终调用内置的事件处理程序( SelectionChangeCalculate等),并且无法替代您自己的。 您可以使用WithEvents关键字创build自己的Worksheetvariables,然后select何时开始接收事件。 例如,从你的一个工作表中的这个结构开始:

 Dim WithEvents MySheet As Worksheet Private Sub MySheet_SelectionChange(ByVal Target As Range) Debug.Print "Receiving events" End Sub 

只要MySheet不绑定到活动工作表,您将不会收到任何事件。 当你准备开始时,调用一个自定义的子程序来完成这个任务:

 Public Sub DoIt() Set MySheet = Sheet1 End Sub