我正在创建一个excel VBA用户窗体,该窗体要求动态创建许多按钮(即,可能需要运行时)。我想为这些按钮分配一个子例程,以便在单击它们时执行一个子例程。

这就是我想做的

Set obj4 = usrform.Controls.Add("forms.commandbutton.1")
obj4.Height = 17
obj4.Left = 450
obj4.Top = 75
obj4.Font.Size = 11
obj4.Name = "compare" & (j - i) 'j and i are some variables in the code
obj4.Caption = "Compare!"
obj4.onclick =  abcd

public sub abcd()
'some code here
end sub

但是此代码未运行。我在某处读到,在这里我不能调用子例程而是函数。我的问题是我只想要一个子例程,因为我不打算从中获取任何返回。但是仍然出于试用目的,我在上面的代码中使abcd()为一个函数,然后我的代码运行了,但是由于它执行了abcd函数而无需按下按钮,因此未成功。

谁能帮我这个?我在各种论坛的互联网上对此进行了大量搜索。

最佳答案

不要卡在子例程v。函数上:如果您不设置函数的返回值,则它与子例程相同。

设置onClick属性时,将其功能名称作为字符串obj4.onclick = "abcd"给出,否则它将执行该功能并保存返回值。

关于excel - EXCEL VBA : calling an event with onclick property of a button which is being created on the fly,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15379923/

10-12 20:13