Vba 检测和触发事件的步骤-Excel
我有条形码扫描器。因此,当使用枪扫描条形码时,该值通常输入到屏幕上的文本字段中 所以我制作了一个excel宏。扫描条形码时,文本显示在单元格上,以Vba 检测和触发事件的步骤-Excel,vba,excel,Vba,Excel,我有条形码扫描器。因此,当使用枪扫描条形码时,该值通常输入到屏幕上的文本字段中 所以我制作了一个excel宏。扫描条形码时,文本显示在单元格上,以新行字符结尾(文本+“\r\n”由扫描仪本身提供)。因此,会触发一个事件并执行其余操作 问题是,事件仅使用新行字符触发。如果条形码扫描仪在每次条形码输出后都没有提供\r\n,该怎么办。我如何处理这种情况? 如何检测并触发事件?在工作表模块中添加工作表更改事件,如下所示: Private Sub Worksheet_Change(ByVal Target
新行
字符结尾(文本+“\r\n”由扫描仪本身提供)。因此,会触发一个事件并执行其余操作
问题是,事件仅使用新行字符触发。如果条形码扫描仪在每次条形码输出后都没有提供\r\n
,该怎么办。我如何处理这种情况?
如何检测并触发事件?在工作表模块中添加工作表更改事件,如下所示:
Private Sub Worksheet_Change(ByVal Target As Range)
' Add code here to check for
' new line and add if not present
End Sub
或者,如果用户表单文本框中有数据,则使用以下命令:
Private Sub TextBox1_Change()
' Add code here to check for
' new line and add if not present
End Sub
如果您创建一个用户表单来获取输入,则可以使用
keydown
或keypress
事件来检测按下的键。您必须知道条形码的结束条件是什么,以便知道何时将值发送到要处理的单元格
Keydown将为您提供移位状态,并捕获pageup/pagedown/其他特殊键
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
Keypress仅适用于生成可键入字符的键
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
如果没有userforms,您将不得不依靠enter/newline来触发工作表中的
Change
事件SendKeys
可以帮助模拟返回键按下,从而触发您的事件。但不确定如何检测输入。根据我(有限)使用条形码枪的工作,枪上有一个设置,用于确定是否在代码之后输入CR/LF。条形码本身往往没有新行characters@SeanCheshire但这同样取决于硬件。告知/解释客户可能会出错。如果未按enter键,则此操作将不起作用。如果单元格仍处于编辑模式,则不会触发工作表更改事件,因为仍可按ESC键中止更改。对s/s的任何更新都将触发更改事件。我不熟悉条形码机器和任何边缘案例,但是如果数据在用户表单的文本框中,您可以使用文本框的更改事件