VBA AddressOf崩溃办公室应用程序

我想运行一个简单的代码片段,但加载Access和Excel崩溃。

我正在运行CallbackTest2,请你帮我。 谢谢分配。

Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" ( _ ByVal lpPrevWndFunc As Long, _ ByVal hwnd As Long, _ ByVal msg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) _ As Long Sub CallbackTest2() CallWindowProc AddressOf CallbackMsg, 0, 0, 0, 0 End Sub Public Function CallbackMsg _ (msg As String, _ ByVal nUnused1 As Long, _ ByVal nUnused2 As Long, _ ByVal nUnused3 As Long) MsgBox "CallBack Work :)" & msg End Function 

find解决scheme。

我改变的事物:

  • CallbackMsg从函数到子
  • 填充数据VarPtr的string参数(“Hallo Welt”)

运行版本:

 Private Declare Function CallWindowProc _ Lib "user32.dll" Alias "CallWindowProcA" ( _ ByVal lpPrevWndFunc As Long, _ ByVal hwnd As Long, _ ByVal msg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long private Sub CallbackTest2() CallWindowProc AddressOf CallbackMsg, VarPtr("Hallo Welt"), 0, 0, 0 End Sub Private Sub CallbackMsg( _ msg As String, _ ByVal nUnused1 As Long, _ ByVal nUnused2 As Long, _ ByVal nUnused3 As Long) MsgBox msg End Sub 
Interesting Posts