Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VBA中动态设置窗体控件的事件处理程序?_Vba_Excel - Fatal编程技术网

如何在VBA中动态设置窗体控件的事件处理程序?

如何在VBA中动态设置窗体控件的事件处理程序?,vba,excel,Vba,Excel,这就是我到目前为止所拥有的,从我所收集到的其他人是如何做到这一点的 Set iComboBoxes = New Collection 'Cycling through all controls and gathering all comboboxes For Each CTRL In UserForm1.Controls If TypeName(CTRL) = "ComboBox" Then iComboBoxes.Add CTRL 'Setting on

这就是我到目前为止所拥有的,从我所收集到的其他人是如何做到这一点的

Set iComboBoxes = New Collection
'Cycling through all controls and gathering all comboboxes
For Each CTRL In UserForm1.Controls
    If TypeName(CTRL) = "ComboBox" Then
        iComboBoxes.Add CTRL
        'Setting onmousedown event handler
        CTRL.OnMouseDown = "=AllComboBoxes_MouseDown(" & CTRL.Name & ")"
    End If
Next CTRL

我在设置OnMouseDown事件处理程序的行中收到一个错误,表示对象不支持此属性或方法。我见过其他人这样做,所以我一定错过了什么。

你在哪里见过其他人这样做的?在Access中?@Rory是的,据我所知,根据文档,该属性在Excel中是相同的。我看不出有什么不同。不同的是那不起作用!您需要使用自定义类和
with events
变量。这里(和其他地方)有许多例子。可能重复