2015-05-30 114 views
1

這是一個快捷方式API,允許您直接訪問Excel中的名稱框。由於我已更改爲64位版本,因此無法使其工作。顯示的錯誤是類型不匹配。將VBA API更新到64位Excel 2013

Private Declare PtrSafe Function FindWindow Lib "USER32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr 
Private Declare PtrSafe Function FindWindowEx Lib "USER32" Alias "FindWindowExA" (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr 
Public Declare PtrSafe Function SendMessageA Lib "USER32" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr 

Private Sub NameBox_Shortcut() 

Dim hWnd As LongLong 

Const NUL = vbNullString 
Const EXCEL_WINDOW = "XLMAIN" 
Const FORMULABAR_LEFT_HALF = "EXCEL;" 
Const NAMEBOX = "COMBOBOX" 
Const WM_LBUTTONDOWN = &H201 
Const WM_LBUTTONUP = &H202 

hWnd = FindWindowEx(FindWindowEx(FindWindow(EXCEL_WINDOW, NUL), 0, FORMULABAR_LEFT_HALF, NUL), 0, NAMEBOX, NUL) 
SendMessageA hwnd, WM_LBUTTONDOWN, 0&, 0& 
SendMessageA hwnd, WM_LBUTTONUP, 0&, 0& 

End Sub 

編輯:更新的代碼。

回答

1

聲明的變量longptr將解決你的問題:

Dim hWnd As LongPtr