【发布时间】:2019-12-13 00:18:28
【问题描述】:
我的代码显示了一个工作表,告诉用户打开宏,而其他工作表保持隐藏状态。重新打开工作簿后,将显示剩余的工作表,并隐藏告诉用户打开宏的工作表。
我想在显示隐藏的工作表之前显示一个用户表单。
Option Explicit
Const origsave As String = "C:\SDK Engineering\iMudCalc Software"
Const origwrkbksave As String = "C:\SDK Engineering\iMudCalc Software\iMudCalc.xlsm"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
'don't display workbook
Application.Visible = False
'Unhide the Starting Sheet
Sheets("Warning").Visible = xlSheetVisible
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Warning" Then
ws.Visible = xlVeryHidden
End If
Next ws
If Len(Dir(origsave)) > 0 Then
MkDir (origsave)
Else
ActiveWorkbook.SaveCopyAs (origwrkbksave)
End If
End Sub
Private Sub WorkBook_Open()
Dim ws As Worksheet
Application.Visible = False
For Each ws In ThisWorkbook.Worksheets
ws.Visible = xlSheetVisible
Next ws
Sheets("Warning").Visible = xlVeryHidden
'this is where I need the workbook to stay invisible and display a userform if macros are enabled...
frmOnLoad.Show
End Sub
我正在使用 Excel 2013。
【问题讨论】:
-
如果宏从一开始就被禁用,你希望你的宏在第一次运行时如何?如果我错了,请纠正我,但如果 Excel 宏安全设置默认设置为不允许宏,我很确定无论它们在 Excel 的第一个实例中做什么(打开/关闭宏),当他们完全退出 Excel,然后重新打开它,它会禁用宏。
-
@BruceWayne 我认为他的建议是您有一个启用宏的工作簿,并且您将其保存为隐藏的所有工作表,除了一张显示“您必须启用宏才能使用此工作簿”或其他内容的工作表。如果他们启用了宏,当它运行时,它会取消隐藏所有工作表并隐藏“您必须启用宏才能使用此工作簿”工作表。如前所述,它可以这样工作。