[英]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").Activate
在Application.EnableEvents = False
和Application.EnableEvents = True
之间进行Sheets("TimeInLibraryData").Activate
,以确保没有其他事件处理程序捕获您的行将触发的Worksheet_Activate
事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.