在closuresVBA事件closures工作簿之前取消= True
我试图写一个简短的macros,这将防止Excel工作簿的用户closures工作簿而不保护第一个工作表。
该代码显示消息框,但继续closures工作簿。 从我的理解,如果“取消”参数设置为True,工作簿不应该closures。
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
我只需要代码来显示消息框,然后不closures,如果第一张表不受保护。
我可以复制它,如果我将Application.EnableEvents
设置为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
迫使国家放弃而不是长期的select可能是一个更安全的select。
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