VBA:通过API函数,调用计算器,模拟按键等操作

42 篇文章 17 订阅
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const WM_CLOSE = &H10
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_SETTEXT = &HC

Sub work()
    Shell "Calc.exe" '打开计算器
    hwnd = FindWindow("CalcFrame", "计算器") '查找句柄
    ShowWindow hwnd, 1 '显示窗口
    SetForegroundWindow hwnd '切换为前置活动窗口(需和上一条搭配使用)
    Sleep 1000 '休息1秒钟
    
    hwnd_txt = FindWindowEx(hwnd, 0, "CalcFrame", "")
    
    PostMessage hwnd, WM_KEYUP, 54, 0 '数字6
    Sleep 1000 '休息1秒钟
    
    PostMessage hwnd, WM_KEYUP, 189, 0 '-
    Sleep 1000 '休息1秒钟
    
    PostMessage hwnd, WM_KEYUP, 49, 0 '数字1
    Sleep 1000 '休息1秒钟
    
    PostMessage hwnd, WM_KEYUP, 187, 0 '=
    Sleep 1000 '休息1秒钟
    
    SendMessage hwnd, WM_CLOSE, 0&, 0& '关闭计算器
End Sub

 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Excel中,VBA是一种编程语言,可以用来自动化执行一系列操作。如果要通过VBA调用VLOOKUP函数实现动态查询,我们可以按照以下步骤进行操作: 1. 打开VBA编辑器:在Excel中按下Alt+F11键,即可打开VBA编辑器窗口。 2. 在VBA编辑器中插入新的模块:在"插入"菜单中选择"模块",即可在项目资源管理器中创建一个新的模块。 3. 编写VBA代码:在新的模块中输入以下代码,用于调用VLOOKUP函数实现动态查询。 ```vba Function VLOOKUP_Dynamic(LookupValue As Range, LookupRange As Range, ColumnIndex As Integer) As Variant Dim Result As Variant Result = Application.WorksheetFunction.VLookup(LookupValue, LookupRange, ColumnIndex, False) VLOOKUP_Dynamic = Result End Function ``` 4. 保存并关闭VBA编辑器:保存VBA代码,然后关闭VBA编辑器窗口回到Excel工作表。 5. 在单元格中调用VBA函数:在Excel工作表中选择一个单元格,在函数栏中输入"=VLOOKUP_Dynamic(要查找的值, 查找范围, 返回列索引)",并按下回车键。其中,"要查找的值"是要动态查询的值,"查找范围"是要进行查询的范围,"返回列索引"是要返回的列号或列索引。 通过以上步骤,我们可以通过VBA调用VLOOKUP函数实现动态查询。每当单元格中的值发生变化时,VLOOKUP_Dynamic函数将会重新计算并返回相应的查询结果。这种方法可以节省时间和手动操作的复杂性,提高查询的效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值