使用Excel 2016,当宏与工作表关联时,VBA不会激活备用工作表

时间:2017-10-13 22:04:29

标签: excel-vba vba excel

我有一个与我的“简介”表相关联的宏。它由单元格更改触发,然后调用第二个宏来操作另一个工作表“TimeInLibraryData”。这很简单:

Private Sub Worksheet_Change(ByVal Target As Range)

Sheets("TimeInLibraryData").Visible = True
Sheets("TimeInLibraryData").Activate

MsgBox "The name of the active sheet is " & ActiveSheet.Name

Call CreateTimeLine.CreateTimeLine1(1)

End Sub

Public Sub CreateTimeLine1(PickSingleLib As Long)

Sheets("TimeInLibraryData").Activate

MsgBox "The name of the active sheet is " & ActiveSheet.Name

End Sub

您可以看到我正在输出活动工作表名称。问题是,在显示的两个地方,我看到ActiveSheet是“简介”表,它应该是“TimeInLibraryData”

该应用程序是用Excel 2010编写的,我刚刚更新到Excel 2016,可以看到问题。

在Excel 2016中运行,如果我在正常运行时访问CreateTimeLine1宏,它可以工作。在更改“简介”工作表后调用宏时,我才发现问题。

我在VBA 2016中创建了一个减少的示例,发现它按预期工作。我还在Excel 2010中创建了一个简单的示例,并在Excel 2016中运行它也起作用。

所以 - 我有一个非常令人困惑的情况与运行一组用Excel / VBA 2010编写的宏在Excel / VBA 2016中无法正常工作相关联

1 个答案:

答案 0 :(得分:0)

我正在使用带有最新补丁的Excel 2016,无法重现该行为。您应该在Sheets("TimeInLibraryData").ActivateApplication.EnableEvents = False之间将呼叫夹在Application.EnableEvents = True之间,以确保没有其他事件处理程序能够捕获您的线路将触发的Worksheet_Activate事件。