繁体   English   中英

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

[英]With Excel 2016, VBA will not activate an alternate worksheet when the Macro is associated with a worksheet

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

专用子Worksheet_Change(按目标的ByVal目标)

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

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

Call CreateTimeLine.CreateTimeLine1(1)

结束子

公共子CreateTimeLine1(PickSingleLib只要很长)

Sheets("TimeInLibraryData").Activate

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

结束子

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

该应用程序是用Excel 2010编写的,而我刚刚更新到出现问题的Excel 2016。

在Excel 2016中运行,如果我在正常运行时访问CreateTimeLine1宏,它将起作用。 我仅在更改“简介”工作表后调用宏时才看到问题。

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

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

我正在使用具有最新修补程序的Excel 2016,无法重现此行为。 您应该Sheets("TimeInLibraryData").Activate调用夹在中间Sheets("TimeInLibraryData").ActivateApplication.EnableEvents = FalseApplication.EnableEvents = True之间进行Sheets("TimeInLibraryData").Activate ,以确保没有其他事件处理程序捕获您的行将触发的Worksheet_Activate事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM