【问题标题】:Stop Excel from changing active sheet on Sheets.Visible = True command阻止 Excel 在 Sheets.Visible = True 命令上更改活动工作表
【发布时间】: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


【解决方案1】:

这是 Excel 2013/2016 中的一个烦人的错误,据我所知,没有修复。我使用的解决方法是:

Set CurrentSheet = ActiveSheet
'Instructions here
CurrentSheet.Activate

【讨论】:

  • 是的,我已经想出了解决方法。我在Sheets().Protect = True 上遇到了同样的问题,但是当我再次看到它时,我希望有一个实际解决问题的方法
【解决方案2】:

我只在某些特定需要时才使用活动工作表。 (根据 MatthewD)

但是当您将所有工作表设置为可见时,您肯定可以添加另一行以使工作表处于活动状态吗?

Sheets("The one you want").Activate 

会做这项工作吗? (或者也许是 .select?)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    相关资源
    最近更新 更多