使用SetTimer函数后,绝对无法运行任何宏

时间:2015-11-27 20:25:08

标签: excel vba excel-vba winapi

所以我需要在Excel VB项目中使用SetTimer API,但在执行间隔计时器后,程序会在您尝试运行另一个宏时立即崩溃。即使只是单击Developer选项卡中的宏按钮。代码:

REORGANIZE

KillTimer似乎不是问题。简单地使用SetTimer设置间隔就像一个开关,用于确保不再运行宏(或者如果你尝试的话,它就会崩溃)。我记得看到错误50290 ,如果还有帮助的话。

为什么会如此,如何解决?

顺便说一句,我正在Excel中为学校项目制作蛇游戏。

似乎在Timer设置之后,由于定时器占用了所有线程,所以不会发生任何事情?或者像这样,并且它不会被打断"。

真的,该API应该如何使用?这似乎是一个致命的错误,使它完全没用......

2 个答案:

答案 0 :(得分:1)

您正在破坏堆栈,因为您的Test程序与TimerProc的签名不符。您应该阅读并理解API调用的文档,然后再盲目地使用它们。

您也可以在MSDN上找到SetTimer的文档,就像所有其他WinAPI文档一样。

答案 1 :(得分:1)

timerPorc的原型就是这个

VOID CALLBACK TimerProc(
  _In_ HWND     hwnd,
  _In_ UINT     uMsg,
  _In_ UINT_PTR idEvent,
  _In_ DWORD    dwTime
);

可以转换为vb,如下所示

sub Test(byval hWnd as long, byval uMsg as long,byval idIvent as long, byval dwTime as long)

    'your code here

end sub