在VBA中同时启用了两个钩子,但只能释放一个怎么回事?

我想通过HOOK同时监控鼠标和键盘的操作,获得鼠标的当前坐标和我按下的按键码。
鼠标这个hook没有问题,但是当我加上键盘hook时候,发现释放不了键盘的hook.
点击结束后,鼠标hook停止了但是键盘还在继续运行。请各位帮帮我。
代码如下:

Sub UNHOOK() '卸钩子
    UnhookWindowsHookEx Mhook2
    UnhookWindowsHookEx Mhook
    Mhook2 = 0
    Mhook = 0

End Sub
Sub MOUSEHOOK()
    Mhook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MyMhook, Application.Hinstance, 0)
    Mhook2 = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf MyMhookkey, Application.Hinstance, 0)
    If Mhook = 0 Then MsgBox "钩子注册失败"
    If Mhook2 = 0 Then MsgBox "钩子注册失败"
End Sub
Public Function MyMhook(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If ncode = 0 Then
        If wParam = WM_MOUSEMOVE Then
            Dim p As POINTAPI
            GetCursorPos p
            GetmousePos.TextBox1.Value = p.X & "," & p.Y
        End If
    Else
        MyMhook = CallNextHookEx(Mhook, ncode, wParam, lParam)
    End If
    MyMhook = CallNextHookEx(Mhook, ncode, wParam, lParam)
End Function
Public Function MyMhookkey(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If ncode = 0 Then
        If wParam = WM_KEYDOWN Then
            CopyMemory mymsg, ByVal lParam, LenB(mymsg)
            a = Chr(mymsg.vKey)
            MsgBox mymsg.vKey
        End If
    Else
        MyMhookkey = CallNextHookEx(Mhook2, ncode, wParam, lParam)
    End If
    MyMhookkey = CallNextHookEx(Mhook2, ncode, wParam, lParam)
End Function