excel - 单击插入按钮时分配给插入按钮的宏不运行
问题描述
我使用以下 VBA 插入一个按钮:
Sub Insert_Button()
Dim Button_01 As Button
Set Button_01 = Sheet1.Buttons.Add(423.75, 0, 48, 15)
Set Range_Button_01 = Sheet1.Range("B1:C5")
Button_01.Name = "Button_01"
With Button_01
.Top = Range_Button_01.Top
.Left = Range_Button_01.Left
.Width = Range_Button_01.Width
.Height = Range_Button_01.Height
.Text = "Button_01"
.OnAction = "Insert_Values"
End With
End Sub
这一切都完美无缺。
如您所见,我已.onAction
为按钮分配了一个 VBA:
Sub Insert_Values()
Sheet1.Range("A1").Value = 200
End Sub
插入按钮并单击它后,我会收到以下错误消息:
This macro may not be available in this workbook or all macros may be disabled
到目前为止,我已经尝试.OnAction
像这样更改属性:
.OnAction = ActiveSheet.Name & ".Insert_Values"
.OnAction ="ThisWorkbook.Insert_Values"
但是,我无法让它工作。
我需要在我的代码中更改什么以便分配的宏运行没有任何问题?
解决方案
它在“ThisWorkbook”中定义
添加一个新的标准模块,将宏程序移到那里。
ThisWorkbook
是一个对象:没有限定符就不能调用它的公共成员。通过将代码移动到标准模块,公共过程在任何地方都可以访问而无需限定符。
或者,您可以限定会员通话。如果我手动将宏分配给公共过程ThisWorkbook
,然后输出形状的OnAction
属性值,我会得到:
Book1!ThisWorkbook.Test
所以,你很接近!假设不涉及空格,这应该有效:
.OnAction = ThisWorkbook.Name & "!ThisWorkbook.Insert_Values"
如果ThisWorkbook.Name
有空格,您需要将其括在单引号中(未经测试):
.OnAction = "'" & ThisWorkbook.Name & "'!ThisWorkbook.Insert_Values"
推荐阅读
- php - 如何将 HTTP PUT 请求中的 multipart/form-data 解析为 PHP 中的关联数组?
- function - 通过公式而不是脚本在单元格中使用 Google 表格文件名?
- python - 我对python课程中给出的一些python代码有疑问
- java - 我在一个简单的 Web Scraper 中遇到 SSL 握手致命错误
- python - 尝试在 Keras 中创建自定义损失函数时出现“张量对象仅在启用急切执行时可迭代”错误
- ios - 以编程方式在 stackView 中布局子视图
- java - 我可以在网络上的某个地方托管我的 ServerSocket 或 Java 文件吗?
- java - 如何将多个 JSON 响应映射到单个 Java POJO?
- html - 生成 html 代码后重新加载一些指令
- pagination - cf curl /v2/organizations 未列出所有组织元数据