我正在尝试编写一个简短的宏,以防止 Excel 工作簿的用户在不保护第一张工作表的情况下关闭工作簿。
该代码显示消息框,但随后继续关闭工作簿。根据我的理解,如果“取消”参数设置为 True,则工作簿不应关闭。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets(1).ProtectContents = True Then
Cancel = False
Else
MsgBox "Please Protect 'Unique Futures' Worksheet Before Closing Workbook"
Cancel = True
End If
End Sub
我只需要代码来显示消息框,然后如果第一张纸不受保护,则不会关闭。
如果我设置的话我可以复制它Application.EnableEvents
to False
。在下面的示例中,我记住了它的状态,将其放回原来的位置,但是,我不确定它是如何达到以下状态的:False
首先。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim BlnEventState as Boolean
BlnEventState = Application.EnableEvents
Application.EnableEvents = True
If Sheets(1).ProtectContents = True Then
Cancel = False
Else
MsgBox "Please Protect 'Unique Futures' Worksheet Before Closing Workbook"
Cancel = True
End If
Application.EnableEvents = BlnEventState
End Sub
从长远来看,强迫国家而不是阻止它可能是一个更安全的长期选择。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.EnableEvents = True
If Sheets(1).ProtectContents = True Then
Cancel = False
Else
MsgBox "Please Protect 'Unique Futures' Worksheet Before Closing Workbook"
Cancel = True
End If
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)