gpt4 book ai didi

Excel VBA - 始终在打开时显示工作表

转载 作者:行者123 更新时间:2023-12-02 09:11:34 25 4
gpt4 key购买 nike

如何使用 VBA 代码满足以下条件?

  1. 即使在未启用宏的情况下打开工作簿,特定工作表也始终会在打开时显示。
  2. 工作簿用户可以在处理任何工作表时保存工作簿。
  3. 保存不得干扰用户 - 不得导航至其他工作表、不得出现消息框等。
  4. 常规保存功能(Ctrl-S,单击“保存”)必须保持可用,并且在使用时必须遵守上述标准。

我想避免尝试在此问题底部列出的解决方案。

详细信息:
该工作簿是在 Windows 7 计算机上使用 Office 2007 创建的。它是一个 .xlsm 工作簿,包含 2 个工作表:“调度程序”和“信息”。工作表选项卡不可见。并非所有用户都会在打开工作簿时启用宏。

打开工作簿后,用户将仅看到一张工作表,如下所示:

  • 如果禁用宏,则会显示“信息”,它基本上告诉任何打开工作簿的人需要启用宏才能实现完整的工作簿功能。如果此时启用了宏,则“调度程序”将被激活。
  • “调度程序”是存储和编辑数据的位置,如果启用宏,则会自动显示。在未启用宏的情况下打开工作簿时,不会向用户显示它。

如果打开工作簿并且禁用宏,则必须首先显示“信息”。

尝试的解决方案(我正在寻找更好的解决方案!):

  • 将代码放入 Workbook.BeforeSave 事件中。这会在激活“信息”的情况下进行保存,以便在打开工作簿时显示它。但是,如果用户处于“调度程序”中并且未完成,我无法在此事件中找到在保存后重新激活“调度程序”的方法。
  • 使用 Application.OnKey 重新映射 Ctrl-sCtrl- S 击键。不幸的是,这忽略了使用鼠标保存的用户(单击“文件...保存”或“Office 按钮...保存”)。
  • 在每个操作期间进行检查,并在需要时激活“调度程序”。换句话说,在 Workbook.SheetActivate.SheetChange 等内容中插入代码code> 事件,在激活“信息”的情况下保存后将“调度程序”重新置于焦点中。这会不断运行 VBA 代码,我觉得这是一个让工作簿中的其他代码陷入麻烦的好方法。
  • 将代码放置在 Worksheet("Info").Activate 事件中,将焦点更改回“Scheduler”。这会导致工作簿打开时显示“计划程序”而不是“信息”的结果,即使禁用了宏也是如此。

最佳答案

这行不通吗? 更新以优雅地处理保存

Private Sub Workbook_Open()
ThisWorkbook.Worksheets("Scheduler").Activate
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Worksheets("Info").Activate
If (ShouldSaveBeforeClose()) Then
Me.Save
Else
Me.Saved = True ' Prevents Excel Save prompt.
End If
End Sub

Private Function ShouldSaveBeforeClose() As Boolean
Dim workbookDirty As Boolean
workbookDirty = (Not Me.Saved)
If (Not workbookDirty) Then
ShouldSaveBeforeClose= False
Exit Function
End If

Dim response As Integer
response = MsgBox("Save changes to WorkBook?", vbYesNo, "Attention")
ShouldSaveBeforeClose= (response = VbMsgBoxResult.vbYes)
End Function

关于Excel VBA - 始终在打开时显示工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19099252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com