我正在尝试将锤子图像附加到Excel上的鼠标光标上。没有Do循环就可以正常工作,也就是当我使用sheet1上的按钮运行宏时,它会将图像移动到鼠标光标附近。当我尝试使用Do循环使图像即时跟随光标时,问题就出现了。在过去,我能够在没有任何错误的情况下实现这一点,但我没有保存Excel工作簿。现在,我正在尝试再次执行此操作,每次都会崩溃Excel。我可能会很幸运并得到一个“对象失败的左方法”或“对象失败的顶级方法”错误,但这并没有真正帮助。这是VBA代码:
Option Explicit
Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Type POINTAPI
x As Long
y As Long
End Type
Sub MoveHammer()
Dim lngStatus As Long
Dim typWhere As POINTAPI
Dim activate As Boolean
activate = True
Do While activate = True
lngStatus = GetCursorPos(typWhere)
Sheet1.Shapes("hammer").Left = 0.75 * (typWhere.x - 77)
Sheet1.Shapes("hammer").Top = 0.75 * (typWhere.y - 274)
Loop
End Sub
“hammer”是我插入的图片对象的名称。感谢。
答案 0 :(得分:1)
由于VBA缺少多线程,为了在循环内部获得响应,你需要在循环体内部DoEvents
。