vba - 通过 ActiveWindow 缩放事件触发的事件(按住 CTRL+鼠标滚轮)

标签 vba excel

我正在构建仪表板,需要将缩放级别设置为100%。因此,每当用户尝试使用鼠标滚轮按钮或缩放级别选项进行缩放时,我都需要捕获该事件并将缩放返回到 100%。我在网上搜索了答案,发现没有 OnZoom 事件这样的东西。

  • 有一个选项可以每隔几毫秒检查一次缩放级别,并且 恢复到100%,但是我不能接受这个造成圆角的原因 不断出现在鼠标箭头上,这很分散注意力。
  • 隐藏缩放控件也不是一个选项,因为用户仍然可以缩放 使用 CTRL+鼠标滚轮。
  • 使用类模块也仅适用于手动选择缩放级别 从菜单查看>缩放 solution

我找到的所有答案都已超过 5 年前,所以也许在此期间有人找到了解决方案,或者此功能已添加到较新版本的 Excel 中?

任何线索将不胜感激!

最佳答案

在使用 ActiveX 控件时找到了解决方案,因此对于每个偶然发现此问题的人,请在下面找到答案。

首先,插入名为 InkPicture 控件 的 ActiveX 控件。

调整整个工作表可见区域的控件大小。

在工作表模块中,粘贴此代码。

Private Sub InkPicture1_Resize(Left As Long, Top As Long, Right As Long, Bottom As Long)
ActiveWindow.Zoom = 100
End Sub

由于某种原因(希望有人能解释一下为什么?),当发生缩放时,会触发 InkPicture_resize 事件! 您还可以将 InkPicture visible 属性 设置为 false,它仍然有效。

关于vba - 通过 ActiveWindow 缩放事件触发的事件(按住 CTRL+鼠标滚轮),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46422870/

相关文章:

c# - 从 Excel 单元格中读取富文本

excel - 如何使用 VBA 遍历 Excel 中的可变列长范围

javascript - 将 HTML 表格导出到 Excel 文件

vba - 延迟 VBA 代码操作而不卡住 Excel

vba - 您可以调用带有按钮的参数的 Sub 吗?

vba - 高级和低级过程之间的错误处理

excel - 给定第一行字段中的特定枢轴项,获取第二行字段的给定枢轴项

vba - 按日期计数Outlook中的电子邮件

vba - 拆分具有多行文本和单行文本的行

java - 从 pdf 表格中填写 excel 中的特定字段