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

Kre*_* L. 3 excel vba

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

  • 有一个选项可以每隔几毫秒检查一次缩放级别并将其恢复到 100%,但我无法接受鼠标箭头上不断出现圆角的原因,这令人分心。
  • 隐藏缩放控件也不是一个选项,因为用户仍然可以使用 CTRL+MouseWheel 进行缩放。
  • 使用类模块也仅适用于从菜单View > Zoom 解决方案中手动选择缩放级别

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

任何线索将不胜感激!

Kre*_* L. 6

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

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

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

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

Private Sub InkPicture1_Resize(Left As Long, Top As Long, Right As Long, Bottom As Long)
ActiveWindow.Zoom = 100
End Sub
Run Code Online (Sandbox Code Playgroud)

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

  • 感谢分享!缩放触发控件的调整大小事件可能是由于控件被格式化为“使用单元格移动和调整大小”。由于 Ink Picture 控件显然是唯一具有调整大小事件的控件,因此它非常适合这种情况。顺便说一句,不必在整个工作表可见区域上调整控件的大小。我使我的尺寸比单元格小一点(10x10 太小,无法由所有缩放值触发,但 20x20 就可以了)。它在不可见模式下不起作用,所以我让它可见 - 无论如何,它的背景颜色可以设置为与单元格相同。 (2认同)