首页 > 解决方案 > 添加按钮并在按下时分配功能

问题描述

在 vba 上,我想添加一个按钮并为其分配一个带有参数的函数。

这是创建按钮的代码(在模块1中):

Set testBtn = Worksheets("HOME").Buttons.Add(Position.Left, Position.Top, Position.Width * 2, Position.Height * 2)
With testBtn
           .OnAction = Send_click(ActiveSheet.Name)
           .Caption = "LOAD " & ActiveSheet.Name
           .Name = "LOAD " & ActiveSheet.Name
           .Font.Bold = True
 End With

而要调用的函数在另一个模块中定义为:

Function Send_click(sheetName As String)

但是,该按钮显示为不可单击,宏 LOADxxx_click 显示为已分配(其中 xxx 是 ActiveSheet.name 的名称),但它显然不存在。

我还尝试了在这里找到的建议并指定模块:

.OnAction = Module4.Send_click(ActiveSheet.Name)

没有不同的结果。

标签: excelvbabutton

解决方案


.OnAction我相信您应该为按钮对象的属性分配一个字符串值。

如果要调用的函数(Send_click在这种情况下)被设置为公共的,那么你只需要构造一个OnAction这样的字符串:

With testBtn
  .OnAction = "'" & "Send_click" & " " & """" & ActiveSheet.Name & """" & "'"
End With

字符串连接部分应返回如下内容:

'Send_click "whatever_the_sheet_name"'

推荐阅读