2013-03-13 101 views
2

我正在創建一個excel VBA用戶窗體,它需要許多按鈕才能在運行中(即按需要運行時)創建。我想給這些按鈕分配一個子程序,以便當它們被點擊時子程序應該執行。EXCEL VBA:使用正在創建的按鈕的onclick屬性調用事件

這就是我想要做的

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函數,而不需要按下按鈕。

任何人都可以幫助我嗎?我在各種論壇上都在互聯網上搜索了很多。

+0

試試'obj4.onclick =「abcd」'。這裏還有一些建議:http://stackoverflow.com/q/566770/18771 – Tomalak 2013-03-13 08:20:54

+0

http://stackoverflow.com/questions/10224511/assign-code-to-a-button-created-dynamically-using-vba - 酮的excel – dee 2013-03-13 09:46:47

回答

1

不要掛在子程序訴功能:如果你不設置函數的返回值,它是一樣的子程序。

設置onClick屬性時,將其作爲字符串的名稱賦予obj4.onclick = "abcd"否則將執行該函數並保存返回值。

相關問題