ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 720|回复: 12

[讨论] 关于Ribbon功能的启用和禁用问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-1-26 21:04 | 显示全部楼层 |阅读模式
最近编了一个插件,用的VS C#,碰到个郁闷的问题,想跟给位探讨探讨用什么样的方式控制好。
问题就是:我希望像Excel自身的Ribbon一样,在关闭所有工作簿后,Ribbon禁用,打开工作簿时启用。我用了工作簿的Open,BeforeClose,Active等事件,正常情况下也是可以做到上述控制。但是碰到一个特殊情况,就是最后一个工作簿关闭的时候,如果工作簿有过改动未保存,这时候Excel提示保存,如果我选择取消,也就是取消关闭,这时Ribbon因为执行了BeforeClose事件已经禁用了。
原因就是先发生BeforeClose,后发生取消选择。但是我没找到能获取取消参数的方法,就发生了上面尴尬的情况,还没关闭工作簿但是Ribbon禁用了。
Excel也没见提供BeforeClose之后的事件,各位有没有碰到过这种问题,有没有什么好的建议?!

TA的精华主题

TA的得分主题

发表于 2024-1-27 08:47 | 显示全部楼层
不算好的建议,在BeforeClose过程中自动执行保存或取消保存,不留选择的机会。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-27 18:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
山菊花 发表于 2024-1-27 08:47
不算好的建议,在BeforeClose过程中自动执行保存或取消保存,不留选择的机会。

那相当于beforeClose的时候自动执行保存,不让程序提示保存,让用户有取消的机会。。。确实也是一个方法。
但是我总觉得我自己对Ribbon的理解不够,会不会还有什么更好的控制办法。。

TA的精华主题

TA的得分主题

发表于 2024-1-27 21:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
当前讨论的焦点问题与Ribbon无关,纯粹是工作簿事件运用的事。你说得很对:Excel也没见提供BeforeClose之后的事件,无论对Ribbon还是其它对象的控制,都会遇到这尴尬的问题,而且,大概不会有完美的解决办法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-30 09:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
山菊花 发表于 2024-1-27 21:13
当前讨论的焦点问题与Ribbon无关,纯粹是工作簿事件运用的事。你说得很对:Excel也没见提供BeforeClose之后 ...

按照你的思路,我可以考虑在BeforeClose中判断当最后一个文档关闭时,文件是否有改动,是否需要保存,然后主动提示用户是否保存,这时候也提供是,否,取消,模拟系统的操作,这样可以提前知道用户的操作。倒是可以避免取消保存之后的Ribbon被禁用的尴尬。
主要是问题是Excel提示保存的提示框要比我提供的MessageBox高档的多了,可是我并不想为了这个以防万一的操作再做个界面,好累。

TA的精华主题

TA的得分主题

发表于 2024-2-16 11:51 | 显示全部楼层
如果没有直接的解决办法,那可以考虑根据使用需求换个思路。关闭所有工作簿后禁用,那么在禁用功能执行前,判断是否还有工作簿存在。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-18 09:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
micch 发表于 2024-2-16 11:51
如果没有直接的解决办法,那可以考虑根据使用需求换个思路。关闭所有工作簿后禁用,那么在禁用功能执行前, ...

起始正常关闭的话是可以判断的。我贴中说的是一个非正常情况。就是最后一个工作簿关闭时,又取消关闭的情况。事件流程是,用户点击关闭最后一个工作簿,我的程序判断是最后一个工作簿关闭,所以禁用功能,然后Excel判断因为有做改动,提示用户是否保存,跳出来的对话框除了是否选项外,还有一个取消,如果点击取消,则关闭工作簿的动作就取消了。但是我的程序已经执行了禁用功能的操作。因为在BeforeClose之后,没有事件可以用来处理后续的判断了。所以。。。就尴尬了。

TA的精华主题

TA的得分主题

发表于 2024-2-18 11:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Enocheasty 发表于 2024-2-18 09:21
起始正常关闭的话是可以判断的。我贴中说的是一个非正常情况。就是最后一个工作簿关闭时,又取消关闭的情 ...

建议取消在关闭事件中禁用,换别的模式来控制能否使用菜单功能,比如执行按钮功能前判断

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-18 16:37 | 显示全部楼层
micch 发表于 2024-2-18 11:19
建议取消在关闭事件中禁用,换别的模式来控制能否使用菜单功能,比如执行按钮功能前判断

这个也是可以的,只是觉得挺另类,Excel其他的内置功能都是工作簿关闭后,功能禁用。

TA的精华主题

TA的得分主题

发表于 2024-3-1 17:22 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 18:35 , Processed in 0.040438 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表