为什么这个VBA代码会破坏Excel?

时间:2018-05-21 12:28:11

标签: excel vba excel-vba

我正在尝试将锤子图像附加到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”是我插入的图片对象的名称。感谢。

1 个答案:

答案 0 :(得分:1)

由于VBA缺少多线程,为了在循环内部获得响应,你需要在循环体内部DoEvents