ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何利用vba代码根据不同列进行切换capslock键状态操作?

如何利用vba代码根据不同列进行切换capslock键状态操作?

作者:绿色风 分类: 时间:2022-08-17 浏览:82
楼主
kevinchengcw
Q: 如何利用vba代码根据不同列进行切换capslock键状态操作?
A: 代码如下:
  1. Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long   '申明api,读取及设置键盘状态
  2. Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long

  3. Const VK_CAPITAL = &H14  '设定常量(Caps Lock键)

  4. Private Sub Worksheet_SelectionChange(ByVal Target As Range)  '利用selectionchange事件进行工作
  5. Dim Key(255) As Byte  
  6. If Target.Cells.Count = 1 Then   '如果选定单元格区域只有一个单元格(即手工输入操作的先决条件),则
  7.     If Target.Column = 1 Then  '如果是A列,则将caps lock状态设置为开
  8.         Call GetKeyboardState(Key(0))
  9.         Key(VK_CAPITAL) = 1
  10.         Call SetKeyboardState(Key(0))
  11.     ElseIf Target.Column = 2 Then  '如果是B列,则将caps lock状态设置为关
  12.         Call GetKeyboardState(Key(0))
  13.         Key(VK_CAPITAL) = 0
  14.         Call SetKeyboardState(Key(0))
  15.     End If
  16. End If
  17. End Sub
实现效果:
当是英文输入法状态时,切换到A列可以输入大写字母及数字,切换到B列可以输入小写字母及数字;
当是中文输入法状态时,切换到A列可以输入大写字母及数字,切换到B列可以输入汉字及数字.
详见素材源帖及附件.
demo.rar
2楼
xyf2210
学习API

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap