Vba 关闭工作簿前必须单击“验证”按钮

Vba 关闭工作簿前必须单击“验证”按钮,vba,excel,Vba,Excel,如果用户更改/写入excel工作表,则必须单击“验证”按钮。如果用户更改数据并尝试保存/关闭excel,则必须向用户显示弹出窗口。我只想在关闭工作簿之前检查是否单击了“验证”按钮。若用户更改了单个字母,则用户需要单击“验证”按钮。单击“验证”按钮后,如果用户再次更改任何数据,则用户也必须在保存/关闭之前收到验证警告。我不想为您写出所有代码,但您需要做的是创建一个更改工作表(或工作簿,如果您愿意)设置自定义工作表属性或在会话之间存储持久值的首选方法的过程。当工作表中的任何内容发生更改时,该过程将运

如果用户更改/写入excel工作表,则必须单击“验证”按钮。如果用户更改数据并尝试保存/关闭excel,则必须向用户显示弹出窗口。我只想在关闭工作簿之前检查是否单击了“验证”按钮。若用户更改了单个字母,则用户需要单击“验证”按钮。单击“验证”按钮后,如果用户再次更改任何数据,则用户也必须在保存/关闭之前收到验证警告。

我不想为您写出所有代码,但您需要做的是创建一个更改工作表(或工作簿,如果您愿意)设置自定义工作表属性或在会话之间存储持久值的首选方法的过程。当工作表中的任何内容发生更改时,该过程将运行,并能够设置您的值,以便您知道“已发生更改,我现在未被验证”

然后,您需要创建一个保存前流程,检查该值是否为“未验证”或“已验证”(false或true或其他)。您将该进程设置为在值“未验证”时中断保存事件并显示错误消息,并在值“验证”时允许它

然后创建一个validate(验证)按钮,以及一个将值设置为“已验证”的过程(可能需要进行检查,并且仅在值尚未“验证”时进行更改,但这取决于您)


然后,您将有一组流程,当工作表/帐簿发生更改时,该值将变为无效并阻止保存。选择“验证”按钮后,验证过程将值更改为“已验证”,并再次允许保存

您有问题吗?请使用@Economist所说的BeforeClose事件。从您的描述中可以看出,在关闭前调用
中的
Validate
代码可能更有效,而不是检查整个工作表的更改,然后调用
Validate
,这(我的理解)基本上会再次检查整个工作表。这样,您根本不必依赖用户单击按钮..我投票将此问题作为非主题关闭,因为它不包含问题。关闭excel工作表时将自动触发before_close事件。