生成调用宏的按钮,但不运行宏。

14 浏览
0 Comments

生成调用宏的按钮,但不运行宏。

在这里使用别人的代码,之前的代码生成了一个名为“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

0
0 Comments

问题出现的原因:在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`工作簿相同的代码模块。

太棒了,谢谢!仍然不清楚为什么那个代码在各种方式下都会出现问题。

0