在WorkbookOpen上以编程方式向工作表添加按钮

时间:2019-07-12 13:45:26

标签: excel vba

我正在尝试使用个人宏工作簿中的脚本将一些按钮加载到包含名称中包含“报告”的电子表格中。我已经验证了该脚本实际上正在与MsgBox一起运行,并且还验证了该脚本在我手动执行脚本时成功添加了按钮,但是在打开文件时无法将按钮加载到工作表上。

我尝试添加Worksheets(1).Activate并将ActiveSheet更改为Worksheets(1),因为我认为可能由于工作表尚未激活而无法正常工作,但那没有帮助。

Option Explicit
Private WithEvents app As Excel.Application
Private Sub app_WorkbookOpen(ByVal wb As Workbook)
    If InStr(wb.FullName, "Checksheet") > 0 Then
        'stuff happening
    ElseIf InStr(wb.FullName, "Report") > 0 Then
        MsgBox "Good"
        ActiveSheet.Buttons.Delete
        Dim btn As Button

        With Range("D2")
            Set btn = ActiveSheet.Buttons.Add(.Left, .Top, .Width, .Height)
            With btn
                '.OnAction = "BtnTest.secondTest"
                .Caption = "Verify First Report"
                .name = "Btn1"
            End With
        End With

        With Range("D4")
            Set btn = ActiveSheet.Buttons.Add(.Left, .Top, .Width, .Height)
            With btn
                '.OnAction = "BtnTest.secondTest"
                .Caption = "Verify Second Report"
                .name = "Btn2"
            End With
        End With

    End If
End Sub

Private Sub Workbook_Open()
    Set app = Me.Application
End Sub

1 个答案:

答案 0 :(得分:2)

使用wb.Activesheetwb.Worksheets(1)

您的代码在ThisWorkbook模块中,因此Activesheet隐式为ThisWorkbook.Activesheet而不是Application.Activesheet