2014-02-21 3 views
2

Я хочу передать CommandButton в качестве аргумента.VBA Excel Передача кнопки в качестве аргумента

Пример:

Sub calc(btn as button) 
btn.Caption = "Something" 
End Sub 

Private Sub CommandButton1_Click() 
calc(CommandButton1) 
End Sub 

Private Sub CommandButton2_Click() 
calc(CommandButton2) 
End Sub 

Это что-то вроде выше возможно? Если да, то как я могу это сделать?

редактировать

Спасибо за ваш ответ, но я не понимаю. Итак, теперь это выглядит так:

Public Sub calc(ByRef btn as Object) 
btn.Caption = "Something" 
End Sub 

Private Sub CommandButton1_Click() 
calc(CommandButton1) 
End Sub 

Private Sub CommandButton2_Click() 
calc(CommandButton2) 
End Sub 

Может быть, кто-то может объяснить это мне более подробно, потому что Im очень новый для VBA.

ответ

0

Это суб:

Public Sub temp(ByRef cmdb As Object) 
cmdb.Caption = "somethine else" 
End Sub 

Это, как вы могли бы назвать его

call sub (commandbutton_1) 
+0

Спасибо за ваш ответ, но я не понимаю. Так это выглядит, как это сейчас: Public Sub известково (ByRef БТН как объект) btn.Caption = "Что-то" End Sub Private Sub CommandButton1_Click() известково (CommandButton1) End Sub Private Sub CommandButton2_Click () calc (CommandButton2) End Sub Может быть, кто-то может объяснить это мне более подробно, потому что Im очень новый для VBA. – Eugen

+0

немного изменил его, но не так ли проще объяснить это :), Если он все еще не имеет смысла, напишите мне свой файл, и я могу взглянуть на него за вас – Pedrumj

+0

большое вам спасибо! Оно работает. Мне нужно прочитать еще кое-что о ключевом слове. – Eugen

3

Понадобится:

Sub calc(btn As MSForms.CommandButton) 
    btn.Caption = "Something" 
End Sub 

И вы должны ссылаться на него в соответствии с правилами:

calc CommandButton1  // best 

call calc (CommandButton1) // ok but verbose 

calc (CommandButton1)  // type mismatch! 

(Несоответствие типа потому, что круглые скобки оценить CommandButton1, что приводит к его собственности по умолчанию (строки), которая несовместима с методом типа аргумента)

+0

спасибо за объяснение! – Eugen

Смежные вопросы