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

时间:2018-03-20 13:03:20

标签: excel vba excel-vba

在此处使用其他人的代码,之前的代码生成一个名为“Test”的工作表。下面的代码是我从另一篇文章中找到的,并且已经对其进行了调整。目的是创建一个粘贴在“测试”表上的按钮,并在生成“测试”表后调用宏“邮件”。

问题是当前代码确实生成了一个正确位置的按钮,但是一旦单击该按钮,它就不会执行任何操作/不运行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

1 个答案:

答案 0 :(得分:1)

我无法让您的代码在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相同的工作簿。