调用工作表在Excel打开时更改事件

时间:2016-04-28 17:46:17

标签: excel vba excel-vba

我在Excel工作簿中的多个工作表中有工作表更改事件。

打开excel工作簿时,我想调用所有这些更改事件。

到目前为止,我还没有能够让它工作或找到一种方法来实现它。我查了一下,但是我找不到任何能说明如何完成这件事的事。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

@Histerical和@newguy肯定有很好的建议。查看工作簿和工作表事件,如https://msdn.microsoft.com/en-us/library/office/dn301171.aspx中列出的那样。您可以将Workbook_Open()事件添加到ThisWorkbook,如下所示。以下代码将遍历工作簿中的每个工作表,并运行Worksheet_Change(如果存在)。

Private Sub Workbook_Open()

    Dim s As Worksheet

    On Error Resume Next
    For Each s In Worksheets
        Run s.CodeName & ".Worksheet_Change", Range("A1")
    Next
    On Error GoTo 0

End Sub

On Error Resume NextOn Error GoTo 0行会禁用特定工作表未定义Worksheet_Change事件时发生的错误。删除这些行并为每个工作表定义一个Worksheet_Change事件可能是更好的做法

答案 1 :(得分:0)

我同意workbook_open上的@newguy。尝试添加一行,例如

Run "Sheet1.worksheet_change", Range("I15")

将工作表名称更改为您要运行的工作表,但请确保它们是在VB编辑器中显示的方式,而不是工作表的实际名称。除了范围之外,您还需要传递一些范围才能使workheet_change正常运行。