如何将参数传递给在Excel VBA中使用onAction事件注册的方法?
我的代码是:
With ActiveSheet.CheckBoxes.Add(rCell.Left, rCell.Top, rCell.Width, rCell.Height)
.Interior.ColorIndex = xlNone
.Caption = ""
.OnAction = "CheckboxChange"
End With
我想将“rCell”传递给“CheckboxChange”子例程。任何方式来做到这一点。基本上我想知道CheckboxChange子例程中复选框所在的单元格。
答案 0 :(得分:4)
改变这个:
.OnAction = "CheckboxChange"
对此:
.OnAction = "'CheckboxChange""" & rCell & """'"
“”“= 3个双引号
“”“”“= 3个双引号& 1单引号& 1双引号
答案 1 :(得分:2)
用chr(34)代替引用(“),它可能更容易,
我有一个带有3个字符串参数的例子:
.OnAction = "'" & ThisWorkbook.Name & "'!'Importer_Items_Temp_par_Menu_Déroulant " & Chr(34) & Nom_Fichier & Chr(34) & " , " & Chr(34) & Old_Val & Chr(34) & " , " & Chr(34) & ThisWorkbook.Sheets("Import_Objets").Cells(Item_Num, q * 2).Value & Chr(34) & "'"
其中Importer_Items_Temp_par_Menu_Déroulant是一个宏,
Nom_Fichier是一个字符串变量
Old_Val,
ThisWorkbook.Sheets(“Import_Objets”)。Cells(Item_Num,q * 2).Value也是一个字符串,来自工作表中的单元格。
答案 2 :(得分:1)
Excel.Checkbox
控件具有属性LinkedCell
。将此属性设置为rCell.Address
之类的值。将OnAction
设置为CheckboxChange
宏。要获取点击的复选框,请使用Evaluate(Application.Caller)
内的CheckboxChange
。 Application.Caller
将成为复选框的名称,Evaluate
将返回复选框对象本身。使用此对象,您可以获得其Name
或LinkedCell
。