【发布时间】:2016-06-23 15:11:02
【问题描述】:
我有一个很大的工作簿,其中有许多用于后台计算的工作表,当它们不使用时我会隐藏它们。工作簿被锁定(没有功能区、工作表选项卡、编辑栏等),因此在使用时不能被篡改。
在 Excel 2010 中,一切顺利,活动工作表没有更改,但现在在 Excel 2016 中,以下 Sub 将活动工作表更改为“CompCalc”工作表,这使用户无法返回到他们需要的工作表继续使用工作簿。
Sub MakeSheetsVisible(Status As Boolean)
Dim VarSubName As String
VarSubName = "MakeSheetsVisible"
'***********************************************************
ProtectSheets (False)
Sheets("DATA_INPUT").Visible = Status
Sheets("RAW_DATA").Visible = Status
Sheets("MASTERHISTORY").Visible = Status
Sheets("CompCalc").Visible = Status
'Sheets("Event_Enter").Visible = Status
Sheets("Raw_Chart_Data").Visible = Status
End Sub
这个 Sub 在从另一个 Sub 调用的 Sub 的末尾调用,可以通过两种方式中的一种触发,在按钮按下或 ListView 双击时。只有当按钮用于调用初始 Sub 并且例程连续运行时(不是按 F8 单步执行),才会在上述例程中更改活动表。
我可以通过在例程开始时检查原始活动工作表并在结束时将其设置回原始工作表来解决此问题,但我想知道为什么会发生这种情况以及是否有办法停止它没有解决方法。任何帮助表示赞赏
【问题讨论】:
-
你用 activesheet 做什么?您很可能希望使用工作表对象而不是使用 .Activesheet 来更改单元格值和其他项目。您可能想发布使用 activesheet 的代码,我们可以帮助您消除 activesheet 的使用。
-
@MatthewD 这并不是说我在工作表更改后使用 ActiveSheet 对任何内容进行更改。问题是随机显示的工作表让用户无法返回到他们应该看到的工作表,因为工作簿已被锁定。
标签: vba excel excel-2016