我使用以下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
Run Code Online (Sandbox Code Playgroud)
所有这些完美地工作。
如您所见,我已经.onAction为按钮分配了VBA :
Sub Insert_Values()
Sheet1.Range("A1").Value = 200
End Sub
Run Code Online (Sandbox Code Playgroud)
插入按钮后,单击它,我收到以下错误消息:
This macro may not be available in this workbook or all macros may be disabled
Run Code Online (Sandbox Code Playgroud)
到目前为止,我试图.OnAction像这样更改属性:
.OnAction = ActiveSheet.Name & ".Insert_Values"
.OnAction ="ThisWorkbook.Insert_Values"
Run Code Online (Sandbox Code Playgroud)
但是,我无法使其工作。
我需要在代码中进行哪些更改,以便分配的宏运行没有任何问题?
它在“ ThisWorkbook”中定义
添加一个新的标准模块,将宏过程移到那里。
ThisWorkbook是一个对象:没有限定符就无法调用其公共成员。通过将代码移至标准模块,公共过程无需限定符即可在任何地方访问。
或者,您可以限定成员通话的资格。如果手动将宏分配给公共过程ThisWorkbook,然后输出形状的OnAction属性值,则会得到以下信息:
Book1!ThisWorkbook.Test
Run Code Online (Sandbox Code Playgroud)
所以,你很亲密!假设不涉及空格,这应该可以工作:
.OnAction = ThisWorkbook.Name & "!ThisWorkbook.Insert_Values"
Run Code Online (Sandbox Code Playgroud)
如果ThisWorkbook.Name有空格,则需要将其用单引号引起来(未经测试):
.OnAction = "'" & ThisWorkbook.Name & "'!ThisWorkbook.Insert_Values"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |