VB编程的键盘控制

合集下载

VBA中检测键盘控制键

VBA中检测键盘控制键

VBA中检测键盘控制键(Shift Control Alt)状态来源:水文工具集分类:代码, 博客标签:VBAVBA编写的程序中,经常需要提供一些功能键或者快捷键或者是辅助键,比如Shift|Control|Alt,以方便用户更方便使用你的程序。

VBA中并没有相关函数来完成检测键盘控制键状态的函数,因此,必须使用Windows API函数GetKeyState。

GetKeyState 函数会返回某个指定按键的状态(按下或者未按下)。

水文工具集提供VBA编写的3个相关函数,可以方便你在代码中使用,用以完成相关功能。

IsShiftKeyDown:检测Shift控制键状态IsControlKeyDown:检测Control控制键状态IsAltKeyDown:检测Alt控制键状态上面的函数返回True或者False,当指定按键按下时返回True,而未按下时返回False。

函数的定义如下:Function IsShiftKeyDown( _LeftOrRightKey As Long = LeftKeyOrRightKey _03.) As Boolean04.Function IsControlKeyDown( _LeftOrRightKey As Long = LeftKeyOrRightKey _07.) As Boolean08.Function IsAltKeyDown( _LeftOrRightKey As Long = LeftKeyOrRightKey _11.) As Boolean上面的函数都有一个可选的参数来指定是检测只有左边或者只有右边或者两者其一或者同时按下控制键,默认是左边右边两者其一,具体的可选参数有下面的类型:Const BothLeftAndRightKeys = 02.' BOTH left and right togetherConst LeftKey = 14.' LEFT key onlyConst RightKey = 26.' RIGHT key onlyConst LeftKeyOrRightKey = 38.' EITHER left or right or BOTH当然如果加以修改,一样可以用来其它功能键。

VB编程中的键盘和鼠标知识总结!

VB编程中的键盘和鼠标知识总结!

VB编程中的键盘和鼠标知识总结!大家好,今天我们来学习VB编程中的键盘与鼠标知识。

读书改变命运,这个理论在当今社会仍然适用。

并且越喜欢读书学习的人,越有更多机会去选择自己想要的生活。

不要惧怕读书的苦,这是你通向美好未来最好的路,共同努力!VB中的键盘与鼠标事件KeyPress事件KeyPress事件简介在窗体上画一个控件(指可以发生KeyPress事件的控件),并双击该控件,进入程序代码窗口后,从'过程'框中选取KeyPress,即可定义KeyPress事件过程。

一般格式为:Private Sub Text1_KeyPress(KeyAscii As Integer)'用户按下并释放一个能产生ASCII码的键时被触发End SubKeyPress事件带有一个参数,这个参数有两种形式:第1种形式是Index As Integer,只用于控件数组;第2种形式是KeyAscii As Integer,用于单个控件。

KeyDown和KeyUp事件KeyDown和KeyUp事件简介KeyDown和KeyUp事件的参数也有两种形式,其中Index As Integer只用于控件数组,而KeyCode As Integer,Shift As Integer用于单个控件。

KeyDown和KeyUp事件都有两个参数,即KeyCode和Shift。

①KeyCode是按键的实际ASCII码。

该码以'键'为准,而不是以'字符'为准。

②Shift转换键。

它指的是3个转换键的状态,包括Shift,Ctrl和Alt键,这3个键分别以二进制数形式表示,每个键有3位,即Shift 键为001,Ctrl键为010,Alt键为100。

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)'用户按下任一个键时被触发End SubPrivate Sub Command1_KeyUp(KeyCode As Integer, Shift As Integer)'用户释放任一个键时被触发End Sub鼠标事件鼠标事件简介为了实现鼠标操作,Visual Basic中提供了以下3个事件过程。

VB中的键盘事件、鼠标事件、拖放技术

VB中的键盘事件、鼠标事件、拖放技术

VB中的键盘事件、鼠标事件、拖放技术键盘事件:参数是KeyAscii,每次按一下键盘上的一个键,相应的键的Ascii码值都要赋给参数KeyAscii,然后再执行相应的操作KeyPreview:接受键盘事件。

默认情况下,窗体的KeyPreview 属性为False,只有窗体获得焦点才能相应键盘事件;若窗体的KeyPreview属性为True,窗体会在空件之前首先截获键盘事件。

Shift And 7: 取Shift参数的低三位,因为7的二进制数是111,shift参数与111进行按位And运算,得到是按了三个功能键中的哪一个。

命令按钮控件的default属性用于设置默认命令按钮.,设置为true时,按[Enter键]相当于用鼠标单击了该按钮,Cancel属性为True,则Esc键触发按钮的Click事件快捷键的优先级高于键盘事件,鼠标事件:参数X和Y表示鼠标指针的位置Clc:清除图像。

划线函数Line格式:Line (x1, y1) -(x2, y2), [color], [B][F](x1, y1) 可选的。

Single (单精度浮点数),直线或矩形的起点坐标。

(x2, y2) 必选的。

Single (单精度浮点数),直线或矩形的终点坐标。

color 可选的。

Long (长整型数),画线时用的 RGB 颜色,可用RGB函数B 可选的。

如果包括,则利用对角坐标画出矩形。

F 可选的。

如果使用了 B 选项,则 F 选项规定矩形以矩形边框的颜色填充。

不能不用 B 而用F。

例:Line (0, 0)-(X, Y), vbGreen, BF拖放技术:DragMode属性:0—手动拖放,1—自动拖放DragDrop事件:Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)Source.Move X, YEnd Sub---Source表示拖放的控件,即DragMode属性为1的控件;xy 表示鼠标指针的位置坐标。

vbSendKeys方法

vbSendKeys方法

vbSendKeys方法
1.模拟按键:
2.输入文本:
3.模拟组合键:
4.间隔时间:
5. 启用/禁用vbSendKeys方法:
需要注意的是,vbSendKeys方法在模拟键盘输入时,键盘焦点必须在接收输入的窗口上。

因此,在调用vbSendKeys方法前,可以使用AppActivate方法将焦点设置到指定的窗口上。

另外,vbSendKeys方法也可以结合循环和条件语句等控制结构,实现更复杂的键盘输入操作。

例如:
```
'循环输入数字1到9
For i = 1 To 9
Next i
'根据条件输入不同的文本
If condition = True Then
Else
End If
```
需要注意的是,vbSendKeys方法虽然可以实现自动化键盘输入操作,但它并不适用于所有情况。

特别是在与其他窗口同时交互或与网络操作相
关的应用程序中,可能会遇到一些问题。

在使用vbSendKeys方法时,应
谨慎选择使用场景,并测试确保其按预期工作。

总结:vbSendKeys方法是Visual Basic中的一个关键方法,用于模
拟键盘输入操作。

通过该方法,可以模拟按键、输入文本、模拟组合键等
操作。

并且可以结合循环和条件语句等控制结构,实现更复杂的键盘输入
操作。

使用vbSendKeys方法时,需要确保窗口焦点正确设置,且在特定
场景下会有一些限制。

VBA 快捷键和快速操作技巧

VBA 快捷键和快速操作技巧

VBA 快捷键和快速操作技巧在使用 Visual Basic for Applications (VBA) 进行编程时,熟练掌握相关快捷键和快速操作技巧是提高效率的关键。

本文将为您介绍一些常用的 VBA 快捷键和快速操作技巧,帮助您更高效地编写 VBA 代码。

1. 快捷键1.1. 编辑快捷键- F7:切换到 VBA 编辑器窗口,在 VBA 编辑器中编辑宏代码。

- Ctrl + G:打开“立即窗口”,可在其中执行单个 VBA 语句或查看变量的值。

- Ctrl + E:切换到“代码窗口”,用于编写和编辑 VBA 代码。

- Ctrl + [:跳转到当前光标所在的变量的声明处。

- Ctrl + Shift + Z:撤销最近的撤销操作。

1.2. 常用调试快捷键- F5:启动或继续执行 VBA 代码,用于调试宏。

- F8:逐行执行 VBA 代码,可用于单步调试。

- Ctrl + F8:切换到“修个模式”,用于选择要执行的代码行。

- Ctrl + Shift + F8:清除所有断点。

- Ctrl + Shift + F9:出发当前项目中所有断点。

1.3. 其他常用快捷键- Ctrl + C:复制选定的内容。

- Ctrl + V:粘贴剪贴板中的内容。

- Ctrl + Z:撤销上一次操作。

- Ctrl + Y:重复上一次操作。

- Ctrl + F:在当前工作表或 VBA 编辑器中查找指定的内容。

2. 快速操作技巧2.1. 自动填充VBA 中可以使用自动填充功能来快速填充一系列单元格或变量。

例如,若要填充一列从 A1 到 A10 的连续数字,只需在 A1 单元格中输入起始数字,然后双击A1 单元格右下角的小黑点即可自动填充完成。

2.2. IntelliSenseVBA 的 IntelliSense 功能能够自动显示与当前正在输入的代码相关的属性、方法、关键字等信息,帮助您快速编写准确的代码。

在编写代码时,可以通过按下“.”键来触发 IntelliSense 提示,然后根据提示选择所需的代码。

VBA中的快捷键设置与应用技巧

VBA中的快捷键设置与应用技巧

VBA中的快捷键设置与应用技巧VBA(Visual Basic for Applications)是一种用于进行自动化操作的编程语言,常用于Microsoft Office软件中,如Word、Excel、PowerPoint等。

它可以帮助用户通过编写宏来提高工作效率和减少重复性操作。

在VBA中,设置和使用快捷键是一个非常实用的技巧,可以进一步提高工作效率。

本文将介绍VBA中的快捷键设置与应用技巧,帮助读者更好地利用VBA进行自动化操作。

一、设置自定义的快捷键在VBA中,通过设置自定义的快捷键,可以方便地执行特定的操作。

下面是设置自定义快捷键的步骤:1. 打开VBA编辑器:在需要设置快捷键的Office软件中,按下“Alt +F11”键,即可打开VBA编辑器。

2. 选择代码窗口:在VBA编辑器中,选择你需要设置快捷键的模块或代码窗口。

3. 打开属性窗口:在VBA编辑器的“视图”菜单中,选择“属性窗口”选项,即可打开属性窗口。

4. 设置快捷键:在属性窗口中,找到“名称”属性,双击该属性,即可编辑快捷键。

输入你想要的快捷键组合,如Ctrl+Shift+P。

5. 编写VBA代码:在代码窗口中,编写你想要执行的VBA代码。

例如,你可以编写一个用于插入当前日期的代码。

6. 关闭VBA编辑器:保存你的VBA代码,并关闭VBA编辑器。

现在,你可以使用你设置的快捷键组合来执行相应的操作。

按下你设置的快捷键时,VBA代码将会被执行,完成相应的任务。

二、常用的快捷键技巧除了设置自定义的快捷键,VBA中还有一些常用的快捷键技巧,可以帮助用户更高效地进行编程和操作。

1. 执行代码:在VBA编辑器的代码窗口中,按下“F5”键,即可执行当前选中的VBA代码。

这对于测试代码和调试程序非常有用。

2. 注释代码:在VBA编辑器的代码窗口中,选中需要注释的代码,然后按下“Ctrl + Shift + C”键,即可将选中的代码添加注释。

VBA的使用技巧与实用技术分享

VBA的使用技巧与实用技术分享

VBA的使用技巧与实用技术分享VBA(Visual Basic for Applications)是一种编程语言,可以在Microsoft Office应用程序中编写自定义的宏和脚本。

它提供了丰富的功能和灵活性,使得用户可以通过简单的代码自动化各种工作,提高工作效率。

本文将分享一些VBA的使用技巧和实用技术,帮助读者更好地应用VBA来完成各种任务。

1. 自定义快捷键VBA允许用户自定义快捷键来执行特定的操作。

在VBE(Visual Basic Editor)中,通过选择"Tools"菜单下的"Options"选项,然后选择"Keyboard"选项卡,在右侧的命令列表中选择需要自定义的命令,并在"Press New Shortcut Key"文本框中输入快捷键。

这样,用户就可以通过快捷键来执行特定的VBA操作,提高工作效率。

2. 循环和条件语句使用循环和条件语句可以实现程序的智能化和自动化。

VBA提供了多种循环和条件语句,如For循环、Do While循环和If语句等。

通过合理地运用这些语句,可以根据特定的条件执行相应的操作,简化繁琐的工作过程,提高代码的灵活性和效率。

例如,假设有一个包含学生成绩的Excel表格,我们可以使用VBA编写一个程序来自动计算每个学生的平均分,并根据平均分的不同给出相应的评级。

通过使用For循环和条件语句,我们可以一次性处理所有学生的成绩,并生成相应的评级报告。

3. 使用数组和集合数组和集合是VBA中常用的数据结构,可以将多个相关的数据保存在一个变量中。

通过使用数组和集合,我们可以方便地处理大量数据,提高代码的可读性和复用性。

在日常工作中,经常需要处理大量的数据,并对其进行相应的操作。

使用数组和集合可以有效地管理这些数据,并进行相应的计算和分析。

例如,我们可以将一组学生的成绩保存在一个数组中,并通过遍历数组来进行求和、平均值等操作。

VB编程控制Windows中文输入法

VB编程控制Windows中文输入法

VB编程控制Windows中文输入法
在Windows中我们可以用“Ctrl+Shift”键来调入或切换中文输入法,但是这样做每次都是使位于输入法列表顶端的那个输入法首先被调用。

通常我们都要连续按好几次“Ctrl+Shift”才能将习惯的输入法调出。

我编制了一段小程序,通过它可以把任意一个输入法放在输入法列表的顶端。

它的原理是:使用LoadKeyboardLayout函数可以改变输入法的顺序,只要在第一个参数中传递目标输入法的KeyboardlayoutName,第二个参数用KLF_REORDER就可以了。

例如,aa = LoadKeyboardLayout(″00000409″, KLF_REORDER) 使英文变成第一。

那怎样获得KeyboardlayoutName呢?因为使用GetKeyboardLayoutname可以返回当前输入法的KeyboardlayoutName,所以我们可以先用GetKeyboardLayoutList 函数来取得所有输入法,再用activateKeyboardlayout()函数设置当前输入法,最后就可以得到它的KeyboardlayoutName了。

具体步骤如下:
打开VB后选择标准的EXE文档,在Form1上添加一个Combobox和一个command控件,输入以下程序。

运行后,在combobox中选择目标输入法,按下command即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB编程的键盘控制
我们利用Visual BASIC编写程序,多数情况只涉及到鼠标操作(如单击、双击、拖动等),但如果程序中需要实现文本编辑、热键激活或利用键盘进行游戏控制等功能时,将不可避免地碰到键盘捕获及处理的问题。

下面,我们就来看一看VB编程中如何进行键盘控制。

一、概述
在VB中,很多控件都提供了键盘输入功能(如文本框、组合框等),但它们对键盘的处理较简单,遇到复杂一点的要求即无能为力。

因而VB提供了KeyPress、KeyUp、KeyDown 三种键盘事件,当用户按键时,会触发这三种事件,而且窗体和接受键盘输入的控件都识别这三种事件。

下表对这些事件作了描述。

KeyDown和KeyUp事件提供了最低级的键盘响应,可用这些事件检测KeyPress事件无法检测到的情况:
◆SHIFT、CTRL和ALT键的特殊组合。

◆光标控制键。

◆HOME、END、PAGEUP、PAGEDOWN等。

◆数字小键盘的数字键与打字键盘数字键的区别。

◆不仅响应按键操作而且响应释放键操作(KeyPress只响应按键操作)。

键盘事件彼此不相互排斥。

按下某键时将生成KeyDown和KeyPress事件,而松开此键时生成KeyUp事件。

当用户按下一个KeyPress不能检测的键时将触发KeyDown事件,松开此键时生成KeyUp事件。

若使用KeyUp和KeyDown事件应确保KeyPress事件的功能不够用,通常编写KeyPress事件的代码比较容易。

二、KeyPress事件
在按下与ASCII字符对应的键时将触发KeyPress事件。

ASCII字符集代表标准键盘的字母、数字和标点符号以及部分控制键(ENTER、TAB、BACKSPACE键等)。

KeyDown 和KeyUp事件能够检测其它功能键、编辑键和光标定位键。

当处理标准ASCII字符时应使用KeyPress事件。

例如,如果希望将输入到文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写:
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(Ucase(Chr(KeyAscii)))
End Sub
KeyAscii参数返回对应所按键的ASCII代码。

也可通过KeyPress事件识别部分控制键。

例如,下述事件过程使用KeyPress检测用户是否正在按BACKSPACE键:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then MsgBox "You Pressed the BACKSPACE key."
End Sub
注:BACKSPACE键的ASCII值为8。

还可用KeyPress事件改变某些键的缺省行为。

例如,当在文本框内按ENTER键就会结束当前行输入并将光标转到下一行(Multiline属性设为True)。

在KeyPress 事件中截断ENTER键(ASCII值为13)就可避免这种情况:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then KeyAscii = 0
End Sub
三、KeyUp和KeyDown事件
KeyUp和KeyDown事件报告键盘本身准确的物理状态:按下键(KeyDown)及松开键(KeyUp)。

而KeyPress事件并不直接地报告键盘状态,它只提供键所代表的字符而不识别键的按下或松开状态。

进一步举例将有助于阐明这一差别。

输入大写"A"时,KeyDown事件获得"A"的ASCII 码。

在输入小写"a"时,KeyDown事件获得相同的ASCII码。

为区分大小写,KeyDown和KeyUp事件使用shift参数。

与此相对照的是,KeyPress事件将字母的大小写作为两个不同的ASCII字符处理。

KeyUp和KeyDown事件通过提供下列两参数返回输入字符的信息。

1、Keycode参数
字母键的Keycode与此字母大写字符的ASCII值相同,所以"A"和"a"的Keycode都是由Asc("A") 返回的数值;数字与标点符号键的Keycode与键上数字的ASCII码相同,因此"1"和"!"的Keycode都是由Asc("1")返回的数值。

Private Sub Text1_Keydown(KeyCode As Integer, Shift As Integer)
If KeyCode = 65 Then MsgBox "You pressed the A or a key."
End Sub
上例中按下"A"或"a"后都将显示消息框,为判断按下的字母是大写还是小写需用shift 参数。

可见,处理这些键时用KeyPress事件更方便。

KeyDown和KeyUp事件可识别标准键盘上的大多数控制键。

其中包括功能键(F1-F12)、编辑键(HOME、PAGEUP、DELETE等)、光标键(↑、↓、←、→)和数字小键盘上的键。

可以通过键代码常数或相应的ASCII值检测这些键。

例如:
Private Sub Text1_Keydown(KeyCode As Integer, Shift As Integer)
If KeyCode = 36 Then MsgBox "You pressed the HOME key."
End Sub
VB中常用控制键的Keycode值见下表:
2、Shift参数
键盘事件使用shift参数来判断按下某键的同时是否按下了SHIFT、CTRL、ALT键或它们的组合。

如果按SHIFT键,则shift 为1;按CTRL键,shift为2;按ALT键,shift为3,通过键值总和来判断这些组合。

例如,同时按下SHIFT和ALT键时shift等于5(1+4)。

在使用中,可将KeyDown 与KeyUp事件及shift参数一同使用以区分字符的大小写或检测各种组合键。

例如,以下事件过程可捕获CTRL+ALT+F1并给出提示:
Private Sub Text1_Keydown(KeyCode As Integer, Shift As Integer)
If Keycode = 112 And Shift = 6 Then MsgBox "You press the CTRL+ALT+F1 Key!"
End Sub
四、编写窗体级键盘处理程序
只有获得焦点的对象才能够接受键盘事件。

当窗体为活动窗体且其上所有控件均未获得焦点时,窗体才获得焦点。

这种情况只有在空窗体或窗体上的控件都无效时才发生。

如果将窗体上的KeyPreview属性设置为True,则每个控件在识别其所拥有的KeyPress、KeyUP、KeyDown事件之前,窗体会抢先接受这些键盘事件。

当您希望无论何时按下某键都会执行同一个操作,而不管哪个控件在此时具有焦点时,这样设置KeyPreview属性极为有用。

可在"属性"窗口中或通过Form_Load过程中的代码设置窗体的KeyPreview属性为True:Private Sub Form_Load
Form1.KeyPreview = True
End Sub
需要注意的是,当把窗体的KeyPreview属性设置为True时,窗体在控件之前识别键盘事件,但对控件来说事件仍然会发生,这可能会造成一次按键触发多个不同的处理。

为防止这种情况,可在窗体键盘事件过程结束前将KeyAscii或KeyCode重置为0。

例如,在窗体上将ENTER键捕获并处理后,把KeyAscii或KeyCode设置为0,则控件在自己的键盘事件过程中将无法识别按下的ENTER键,因而控件的键盘事件过程也不被调用。

下面,我们来看一个键盘处理的简单例子:设计一个窗体和文本框以及其它控件,无论焦点在哪个控件,按下CTRL+P即让文本框显示"Hello!";按下ALT+C 清除文本框;按下F10结束程序。

Private Sub Form_Load()
Form1.KeyPreview = True
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 80 And Shift = 2 Then Text1.Text = "Hello!"
If KeyCode = 67 And Shift = 4 Then Text1.Text = ""
If KeyCode = 121 Then End
End Sub。

相关文档
最新文档