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