生成调用宏的按钮,但不运行宏。
生成调用宏的按钮,但不运行宏。
在这里使用别人的代码,之前的代码生成了一个名为“Test”的工作表。下面的代码是我从另一个帖子中找到的,并进行了改编。目标是在“Test”工作表上创建一个按钮,并在生成“Test”工作表后调用一个名为“Mail”的宏。
问题是当前的代码确实在正确的位置生成了一个按钮,但是当点击按钮时它不起作用/不运行Mail()子程序。
Dim Obj As Object Dim cmod Dim Code As String With ThisWorkbook.Worksheets("Test") Set Obj = .OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ Link:=False, DisplayAsIcon:=False, Left:=435, _ Top:=106.5, Width:=89.25, Height:=38.25) Obj.Name = "ButtonTest" Obj.Object.Caption = "Email Workbook" Obj.Object.OnAction = "ButtonTest_Click" Code = "Sub ButtonTest_Click()" & vbCrLf & _ "Call Mail" & vbCrLf & _ "End Sub" With .Parent.VBProject.VBComponents(.CodeName).CodeModule .insertlines .CountOfLines + 1, Code End With End With
问题出现的原因:在Excel 2016中,尝试添加按钮时,出现了一些无法调试的错误。
解决方法:尝试使用以下类似的代码替代:
Sub foo() Dim Obj As Object With ThisWorkbook.Worksheets("Test") Set Obj = .Buttons.Add(Left:=435, Top:=106.5, Width:=89.25, Height:=38.25) Obj.Name = "ButtonTest" Obj.Caption = "Email Workbook" Obj.OnAction = "Email_Template.Mail" End With End Sub
上述代码假设`Email_Template`是与`ThisWorkbook`工作簿相同的代码模块。
太棒了,谢谢!仍然不清楚为什么那个代码在各种方式下都会出现问题。