首页 > 解决方案 > 当您在子程序内部时,事件可以触发吗?

问题描述

我意识到我移动图像的算法是一团糟,但现在这并不重要。我的问题确实围绕以下问题进行 - 是否可以进行设置,以便当我双击 dblclick 事件触发时,将 doubleClicked 更改为 false 然后退出我的循环?

Dim orginx As Long
Dim originy As Long
Dim doubleClicked As Boolean

Private Sub Image1_Click()
    doubleClicked = False

    originx = Image1.Left
    originy = Image1.Top

    Do
    If originx / 2 > 1 Then
        Do
        Image1.Left = originx - 2
        Image1.Top = originy - 2
        originx = Image1.Left
        originy = Image1.Top
        Loop Until originx / 2 < 1
    Else
        Do
        Image1.Left = originx + 2
        Image1.Top = originy + 2
        originx = Image1.Left
        originy = Image1.Top
        Loop Until originx + 2 > 432
    End If
    Loop Until doubleClicked = True
End Sub

Private Sub Image1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    doubleClicked = True
End Sub

标签: excelvba

解决方案


是的。您需要在 do 循环中添加一个 DoEvents() (任何地方都可以),但这会带来性能损失。


推荐阅读