这是一个快捷方式API,允许您直接访问Excel中的名称框。由于我已经改为64位版本,我无法使其工作。显示的错误是类型不匹配。
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
编辑:更新了代码。
答案 0 :(得分:1)
声明你的变量,因为longptr将解决你的问题:
Dim hWnd As LongPtr