ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 586|回复: 9

[求助] 请问高手,如何用VBA关闭或开启Capslock、ScrollLock灯?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-30 14:25 | 显示全部楼层 |阅读模式
请问高手,如何用VBA关闭或开启Capslock、ScrollLock灯?

TA的精华主题

TA的得分主题

发表于 2023-6-30 17:16 | 显示全部楼层
  1. Application.SendKeys "{SCROLLLOCK}"
  2. Application.SendKeys "{CAPSLOCK}"
复制代码

可参考微软官方文档

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-6-30 17:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sweetlyeep 发表于 2023-6-30 17:16
可参考微软官方文档

https://learn.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/sendkeys-statement

TA的精华主题

TA的得分主题

发表于 2023-6-30 17:27 来自手机 | 显示全部楼层
'模拟按钮、键盘模拟、模拟按键(方便搜索)

'API函数`keybd_event`来模拟按下或释放键盘按键
Private Declare Sub keybd_event Lib "user32" _
        (ByVal bVk As Byte, ByVal bScan As Byte, _
        ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
        
'API函数`GetKeyState`来查看按钮状态
Private Declare Function GetKeyState Lib "user32" _
        (ByVal nVirtKey As Long) As Integer

'根据需要点击按钮
'bVk:按钮的编码
'isOn: true 表示 打开, false 表示关闭(常用于三个键盘灯)
Sub KeyboardControl(bVk As Byte, isOn As Boolean)
    '判断键盘灯是否生效,根据需要点击按钮
    If (GetKeyState(bVk) And isOn = False) _
            Or (Not GetKeyState(bVk) And isOn = True) Then
        keybd_event bVk, 0, 0, 0: keybd_event bVk, 0, 2, 0
    End If
End Sub

Sub 调用测试()
   
    '关闭 Num Lock
    KeyboardControl 144, False
    '打开 Num Lock
    KeyboardControl 144, True
   
    '打开 Caps Lock
    KeyboardControl 20, True
    '关闭 Caps Lock
    KeyboardControl 20, False
   
    '打开 Scroll Lock
    KeyboardControl 145, True
    '关闭 Scroll Lock
    KeyboardControl 145, False
   
End Sub


'                                                      键盘键与虚拟键码对照表
'
'      字母和数字键      数字小键盘的键            功能键                   其它键
'      键   键码    键   键码    键   键码     键    键码
'      A   65     0   96     F1   112   Backspace    8
'      B   66     1   97     F2   113   Tab       9
'      C   67     2   98       F3   114    Clear      12
'      D   68     3   99     F4   115    Enter      13
'      E   69     4   100      F5   116    Shift      16
'      F   70     5   101    F6   117    Control     17
'      G   71     6   102      F7   118   Alt       18
'      H   72     7   103      F8   119   Caps Lock    20
'      I   73    8   104    F9   120  Esc       27
'      J   74    9   105      F10  121    Spacebar    32
'      K   75    *   106     F11  122  Page Up     33
'      L   76    +   107     F12  123  Page Down    34
'      M   77    Enter 108    --   --    End       35
'      N   78    -   109    --   --    Home      36
'      O   79    .   110    --   --     Left Arrow   37
'      P   80    /   111    --   --     Up Arrow    38
'      Q   81    --   --     --   --     Right Arrow   39
'      R   82    --   --    --   --      Down Arrow    40
'      S   83    --   --     --   --     Insert      45
'      T   84    --   --     --   --     Delete      46
'      U   85    --   --     --   --     Help       47
'      V   86    --   --    --   --     Num Lock     144
'            W 87
'            x 88
'            y 89
'            Z 90
'      0   48
'      1   49
'      2   50
'      3   51
'      4   52
'      5   53
'      6   54
'      7   55
'      8   56
'      9   57

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-1 10:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
sweetlyeep 发表于 2023-6-30 17:16
可参考微软官方文档

好的。谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-1 10:51 | 显示全部楼层
追风少年丶斌 发表于 2023-6-30 17:27
'模拟按钮、键盘模拟、模拟按键(方便搜索)

'API函数`keybd_event`来模拟按下或释放键盘按键

好的。估计这个比较强大。我试试。谢谢

TA的精华主题

TA的得分主题

发表于 2024-3-10 17:39 | 显示全部楼层
sweetlyeep 发表于 2023-6-30 17:16
可参考微软官方文档

奇怪了,用其中一个影响的却是2个按键……有没判断状态并确保Scroll按下状态的代码?即如果Scroll是按下状态就什么不做继续往下执行,如果是非按下状态就点亮Scroll状态。

TA的精华主题

TA的得分主题

发表于 2024-3-10 17:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
追风少年丶斌 发表于 2023-6-30 17:27
'模拟按钮、键盘模拟、模拟按键(方便搜索)

'API函数`keybd_event`来模拟按下或释放键盘按键

运行时提示:编译锴误:在 End sub、End Function 或 End 属性后面只能出现注释

请问如何处理?

TA的精华主题

TA的得分主题

发表于 2024-3-10 17:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习了。。。

TA的精华主题

TA的得分主题

发表于 2024-3-10 20:20 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-29 20:25 , Processed in 0.042412 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表