Aar*_*mas 4 excel vba excel-vba
如何使用VBA代码满足以下条件?
我想避免在本问题的底部列出的尝试解决方案.
详细信息:
工作簿是在Windows 7计算机上使用Office 2007创建的.它是一个包含2个工作表的.xlsm工作簿,"Scheduler"和"Info".工作表标签不可见.并非所有用户都会在打开工作簿时启用宏.
打开工作簿后,用户将只能看到如下所示的一个工作表:
如果打开工作簿并禁用宏,则"Info"必须首先显示.
尝试解决方案(我正在寻找更好的解决方案!):
Workbook.BeforeSave事件中放置代码.这将保存并激活"信息",以便在打开工作簿时显示.但是,如果用户在"调度程序"中并且没有完成,我在此事件中找不到一种方法可以在保存后重新激活"调度程序".Application.OnKey重新映射Ctrl- s和Ctrl- S按键.不幸的是,这省去了使用鼠标保存的用户(单击文件...保存或Office按钮...保存).Workbook.SheetActivate or .SheetChange events to put "Scheduler" back into focus after a save with "Info" activated. This runs VBA code constantly and strikes me as a good way to get the other code in the workbook into trouble.Worksheet("Info").Activate event, to change focus back to "Scheduler". This leads to the result of "Scheduler", not "Info", showing when the workbook is opened, even with macros disabled.这不行吗?更新以妥善处理保存
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
Run Code Online (Sandbox Code Playgroud)