You can subclass the Listbox, intercept the WM_LBUTTONDOWN message and disable it.
Code:
'Module code:
Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal _
nIndex As Long) As Long
Declare Function SetWindowLong& Lib "user32" _
Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal _
nIndex As Long, ByVal dwNewLong As Long)
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
Const GWL_WNDPROC = (-4)
Const WM_LBUTTONDOWN = &H201
Public WndProcOld As Long
Public Function WindProc(ByVal hwnd As Long, ByVal _
wMsg As Long, ByVal wParam As Long, ByVal lParam As _
Long) As Long
If wMsg = WM_LBUTTONDOWN Then Exit Function
WindProc = CallWindowProc(WndProcOld&, hwnd&, _
wMsg&, wParam&, lParam&)
End Function
Sub SubClassWnd(hwnd As Long)
WndProcOld& = SetWindowLong(hwnd, _
GWL_WNDPROC, AddressOf WindProc)
End Sub
Sub UnSubClassWnd(hwnd As Long)
SetWindowLong hwnd, GWL_WNDPROC, WndProcOld&
WndProcOld& = 0
End Sub
'Form code:
Private Sub Form_Load()
SubClassWnd List1.hwnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnSubClassWnd List1.hwnd
End Sub