Excel VBA userform Image1.picture更改在布尔启用/禁用后不起作用

Excel VBA userform Image1.picture更改在布尔启用/禁用后不起作用,excel,vba,Excel,Vba,我发现了一些奇怪的行为,这真的给我构建的一个外观光滑的excel应用程序蒙上了一层阴影 我有4张图片: Image1是主图像,上面有一个鼠标移动事件。 Image2是image1顶部的一个不可见图像,它也有一个鼠标移动事件 Image3和Image4充当两个图像的存储器,这两个图像根据触发的鼠标移动事件放置在image1中 鼠标移动事件首先检查布尔值“isLocked”是否为真,如果为真,则不会更改图片 如果我单击image2将“isLocked”设置为true,则图像不会交换。酷!如果我再次单

我发现了一些奇怪的行为,这真的给我构建的一个外观光滑的excel应用程序蒙上了一层阴影

我有4张图片:

Image1是主图像,上面有一个鼠标移动事件。 Image2是image1顶部的一个不可见图像,它也有一个鼠标移动事件

Image3和Image4充当两个图像的存储器,这两个图像根据触发的鼠标移动事件放置在image1中

鼠标移动事件首先检查布尔值“isLocked”是否为真,如果为真,则不会更改图片

如果我单击image2将“isLocked”设置为true,则图像不会交换。酷!如果我再次单击image2将“isLocked”设置为false,那么程序将按预期恢复,图像将按预期交换

现在的问题是,如果我从其他任何地方调用image2_click例程,代码会按预期恢复,但从那时起图像不会改变

我已经尽可能减少了代码,以复制行为,我希望有人能用我的逻辑发现修复/错误

Dim isLocked As Boolean

Private Sub UserForm_Initialize()
Me.DrawBuffer = 1048576
isLocked = False
End Sub

Private Sub Image1_Click()
Call Image2_Click
End Sub

Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Not isLocked Then
If Not Me.Image1.Picture = Me.Image3.Picture Then Me.Image1.Picture = Me.Image3.Picture
End If
End Sub

Private Sub Image2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Not isLocked Then
If Not Me.Image1.Picture = Me.Image4.Picture Then Me.Image1.Picture = Me.Image4.Picture
End If
End Sub

Private Sub Image2_Click()
If isLocked Then
    isLocked = False
Else
    isLocked = True
End If
End Sub

“如果我从其他任何地方调用image2_click例程,代码将按预期恢复,但图像不会从该点更改”例程只是翻转
isLocked的值,您为什么希望它做更多事情?旁注
Image2\u单击
可以是一行
isLocked=notislocked
A.S.H-因为当isLocked为false时,图片应该更改;一步一步地浏览代码图片明显在变化,代码正在处理中,但屏幕上的图像没有变化。我尝试了doevents、repaint、userform\u初始化。。。我就是不明白。还感谢Scott Holtzman提供了优雅的快捷方式。“如果我从其他任何地方调用image2_click例程,代码将按预期恢复,但图像不会从该点更改”例程只是翻转了
isLocked
的值,您为什么希望它做更多事情?旁注
Image2\u单击
可以是一行
isLocked=notislocked
A.S.H-因为当isLocked为false时,图片应该更改;一步一步地浏览代码图片明显在变化,代码正在处理中,但屏幕上的图像没有变化。我尝试了doevents、repaint、userform\u初始化。。。我就是不明白。还要感谢斯科特·霍尔茨曼优雅的捷径。