检测并触发事件 - Excel

时间:2012-11-21 13:29:07

标签: excel vba excel-vba

我有条形码扫描仪。因此,当使用喷枪扫描条形码时,通常会将值输入到屏幕上的文本字段中。

所以我制作了一个excel宏。扫描条形码时,文本显示在以new line字符结尾的单元格上(文本+“\ r \ n”由扫描仪本身提供)。所以一个事件被触发并完成其余的事情。

问题是该事件仅由新行字符触发。如果条形码扫描器在每个条形码输出后没有提供\r\n怎么办?我该如何处理这种情况? 如何检测并触发事件?

2 个答案:

答案 0 :(得分:2)

如果您创建用户表单以获取输入,则可以使用keydownkeypress事件来检测按下的键。您必须知道条形码的结束条件是什么,因此您知道何时将值发送到要处理的单元格。

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事件

答案 1 :(得分:0)

将如下的Worksheet_Change事件添加到工作表模块中:

Private Sub Worksheet_Change(ByVal Target As Range)

    ' Add code here to check for
    ' new line and add if not present

End Sub

或者如果您在Userform文本框中有数据,请使用以下内容:

Private Sub TextBox1_Change()

    ' Add code here to check for
    ' new line and add if not present

End Sub