打开工作簿时,Workbook_Open sub不会运行?

The*_*Man 16 excel vba excel-vba

该程序应该创建一个按钮,用户可以按下该按钮来激活不同的子.从我的在线搜索看,下面的子项似乎应该在打开工作簿时激活,但事实并非如此?

我究竟做错了什么?

Option Explicit
Private Sub Workbook_Open()
Dim btn As Button
Dim rng As Range
With Worksheets("Sheet1")
    Set rng = .Range("B2:C2")
        Set btn = .Buttons.Add(rng.Left, rng.Top, rng.Width, rng.Height)
    With btn
        .Caption = "To begin the program, please click this button"
        .AutoSize = True
        .OnAction = "TableCreation1"
    End With
End With
End Sub
Run Code Online (Sandbox Code Playgroud)

dan*_*rak 39

确保将Private Sub Workbook_Open()子例程粘贴到此Workbook对象内部而不是模块,表单或工作表对象中.

  • 那您能标记我为正确答案吗?:)(我正在尝试回答问题以获取对该网站的完全访问权限!) (3认同)

小智 7

我找到的解决方案是运行下面的代码,然后“打开”事件起作用。

Sub EventRestore()

    Application.EnableEvents = True

End Sub
Run Code Online (Sandbox Code Playgroud)


DrM*_*use 6

有趣.在2009年,描述了与要打开的工作表的条件格式的冲突,如在 vbforum帖子中.

似乎这个错误仍然存​​在于excel中并阻止workbook_open事件被触发.我有一个工作簿(旧的XLS二进制格式),它根本不会在Excel 2003和2007中触发事件,但是在2013年.我删除了第一个工作表中的所有条件格式,但仍然无法让workbook_open程序在旧的Excel 中运行 -版本.

我在分布式工作簿中使用的解决方法是使用本地变量和工作簿中的第二个事件,如下所示:

''
' private variable
Private wbOpenEventRun as Boolean

''
' procedure to be called by excel when workbook opens
Private Sub Workbook_Open()
    wbOpenEventRun = true
    ' perform tasks
End Sub

''
' the selection change event fires usually.
' performance is not reduced
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Not wbOpenEventRun Then Workbook_Open
    ' perform tasks in reaction of selection change events, if required
End Sub
Run Code Online (Sandbox Code Playgroud)