excel - 添加按钮并在按下时分配功能
问题描述
在 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)
没有不同的结果。
解决方案
.OnAction
我相信您应该为按钮对象的属性分配一个字符串值。
如果要调用的函数(Send_click
在这种情况下)被设置为公共的,那么你只需要构造一个OnAction
这样的字符串:
With testBtn
.OnAction = "'" & "Send_click" & " " & """" & ActiveSheet.Name & """" & "'"
End With
字符串连接部分应返回如下内容:
'Send_click "whatever_the_sheet_name"'
推荐阅读
- c# - 为什么在 Entity Framework Core 中使用带有包含的 CTE 会导致此错误:“调用存储过程时不支持包含操作”
- php - 访问函数返回的数组元素时出错
- protractor - 使用量角器和角度 6 动态创建表头的测试列表
- javascript - NestJs 重定向而不使用响应
- python - 合并具有相同名称但不对列进行排序的数据框列
- ajax - IE 不支持 xhr.responseURL
- r - 网页抓取 R - 我可以从这个页面提取数据还是只提取图片?
- android - 从适配器调用方法?
- angular - 运行时基于 canLoad 加载模块
- github - 如何在 Mac 上下载 GrapesJS