Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 Const CB_SHOWDROPDOWN = &H14F Private sub combo1_change()
dim r as long
 if combo1.text<>""
   r = SendMessageLong(Combo1.hWnd, CB_SHOWDROPDOWN, True, 0) '下拉框
 else
  r = SendMessageLong(Combo1.hWnd, CB_SHOWDROPDOWN, False, 0)'关闭
 end if
End sub
试试看?
至于排序,自己再写吧,应该不难。