【问题标题】:VBA: Disable double-click on form control (button)VBA:禁用双击表单控件(按钮)
【发布时间】:2017-11-08 20:39:07
【问题描述】:

我在 Excel 中有一个带有“下一个”和“上一个”按钮的 VBA 表单,用于更新图像控件的图片源。

我希望能够非常快速地连续单击这些按钮以循环浏览图像。但是,当我连续单击两次(双击)时,我只会得到一个响应。

我怀疑是这种情况,因为当两次单击彼此非常接近时,会触发按钮上的双击事件而不是单击事件。

我的目标是完全禁用双击事件,让我可以随心所欲地单击按钮。有没有办法做到这一点?

【问题讨论】:

  • 您是否尝试过放入您的DoubleClick 事件集Cancel = True
  • @David G. 不起作用;这是 MouseUp...

标签: vba excel


【解决方案1】:

改为拦截MouseUp 事件。

【讨论】:

  • 好主意,但行不通。显然 MouseDown 每次双击只调用一次。
【解决方案2】:

常规命令按钮可能不是最好的控制;你正在做的事情听起来更像是需要一个旋转按钮(带有下一个/后退控件的那个)。

如果这不能解决问题,愚蠢的简单解决方案是双击,甚至只需调用两次点击事件。

【讨论】:

  • 旋转按钮的好处;我会调查一下 - 是的,通过双击调用 click 事件可以正常工作。
【解决方案3】:

我实际上想出了一个非常简单的解决方法:

在 DoubleClick 事件中,我可以像这样简单地调用 Click 事件:

Private Sub NextBtn_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    NextBtn_Click
End Sub

我现在可以按我想要的速度点击按钮,每次点击后都会执行相同的代码。

【讨论】:

  • 像这样“手动”调用事件处理程序是一个非常强烈的信号,表明您做错了。事件处理程序不是普通的过程,它们处理事件
  • 真;理想情况下,我会从两个事件处理程序中调用像“GoToNextImage”这样的函数。 (我只是懒得创建一个单独的函数)
  • 然而,处理正确的事件可以使解决方案更加健壮和优雅,不是吗:)
猜你喜欢
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 2016-12-15
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多