表单控件
在普通模块中添加一个不带参数的过程:
Public Sub Button_Click()
GetFile Application.Caller
End Sub
此代码将获取按钮名称并将其传递给GetFile
程序。
Sub GetFile(Account As String)
MsgBox "Account Name is " & Account
End Sub
所以现在您需要做的就是为按钮命名Account1, Account2, ETC..
ActiveX 控件
如果您使用 ActiveX 控件,则可以使用类来捕获单击事件。
创建一个类模块并命名clsButtonClick
.
将此代码添加到类模块中:
Public WithEvents AccountBtn As MSForms.CommandButton
Private Sub AccountBtn_Click()
MsgBox AccountBtn.Name & " on " & AccountBtn.Parent.Name
GetFile AccountBtn.Name
End Sub
在普通模块的最顶部添加以下行:
Public colBtns As New Collection
并将此代码添加到模块中:
Public Sub Initialize_Buttons()
Dim wrkSht As Worksheet
Dim btnEvnt As clsButtonClick
Dim obj As OLEObject
For Each wrkSht In ThisWorkbook.Worksheets
For Each obj In wrkSht.OLEObjects
If TypeName(obj.Object) = "CommandButton" Then
Set btnEvnt = New clsButtonClick
Set btnEvnt.AccountBtn = obj.Object
colBtns.Add btnEvnt
End If
Next obj
Next wrkSht
End Sub
这将遍历工作簿中的每个工作表,并为任何 ActiveX 命令按钮提供来自类模块的单击事件。
更新Initialize_Buttons
如果您需要将其限制为特定工作表或工作表上的特定按钮,请执行以下步骤。
最后调用Initialize_Buttons
代码在Workbook_Open
事件在ThisWorkbook
module.