建立一个模块(如下)
Option Explicit
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private 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
Private Const GWL_WNDPROC = -4Private OldFrmProc As Long
Private hFrmWnd As LongPublic Sub HookFrm(FrmhWnd As Long)
    hFrmWnd = FrmhWnd
    OldFrmProc = SetWindowLong(hFrmWnd, GWL_WNDPROC, AddressOf FrmMsg)
    
End SubPublic Sub UnHookFrm()
    Call SetWindowLong(hFrmWnd, GWL_WNDPROC, OldFrmProc)
    
End SubPublic Function FrmMsg(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Debug.Print "&H" + Hex$(uMsg)
    
    Select Case uMsg
    Case ……
        ……
    Case Else
        FrmMsg = CallWindowProc(FrmCboProc, hwnd, uMsg, wParam, lParam)
    End Select
    
End Function注意:
在Form_Load中加入“HookFrm Me.hWnd”
在Form_UnLoad中加入“UnHookFrm Me.hWnd”
在FrmMsg中处理消息