检测并触发事件 – Excel

我有一个条码扫描器。 所以当使用喷枪扫描条形码时,通常将数值input到放置在屏幕上的文本字段中。

所以我做了一个excelmacros。 扫描条形码后,文本出现在以new line字符结尾的单元格中(文本+“\ r \ n”由扫描仪本身提供)。 所以一个事件被触发,剩下的事情就完成了。

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

如果您创build一个用户表单来接受input,则可以使用keydownkeypress事件来检测按下的键。 您将不得不知道条码的最终条件是什么,所以您知道何时将值发送给要处理的单元格。

Keydown会给你转变的状态,并捕捉pageup / pagedown /其他特殊键

 Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _ ByVal Shift As Integer) 

按键只能用于产生可键入字符的按键

 Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 

没有用户表单,你将不得不依靠enter / newline触发工作表中的Change事件

将如下所示的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