gpt4 book ai didi

vba - BeforeClose VBA 事件在 Cancel = True 时关闭工作簿

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

我正在尝试编写一个简短的宏,以防止 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

我只需要代码来显示消息框,然后如果第一个工作表不 protected ,则不会关闭。

最佳答案

如果我将 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

从长远来看,强制国家而不是恢复国家状态可能是更安全的选择。

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

关于vba - BeforeClose VBA 事件在 Cancel = True 时关闭工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36896555/

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