我有一个表格,上面有3个TextBox
控件:股票代码,数量,证书编号。股票代码TextBox
设置为在加载表单时自动聚焦。
由于用户希望能够扫描条形码以填充TextBox
或手动输入数据,因此我还将PC上连接了条形码扫描仪。
要扫描的标签包含两个条形码。一个是证书编号,另一个是股票代码。
股票条形码的前缀为“ SBC /”,而证书条形码的前缀为“ C /”。
当用户扫描条形码时,如果焦点所在的TextBox
是股票代码TextBox
,那么我要进行如下检查。
Private Sub txtStockCode_Change()
On Error GoTo errError1
If Len(txtStockCode.Text) >= 5 Then
If bChangeCode Then
If Left(txtStockCode.Text, 2) = "C/" Then
msgbox "You have scanned the certificate barcode; please scan the stock barcode."
txtStockCode.Text = ""
Else
bChangeCode = False
txtStockCode.Text = Replace(txtStockCode.Text, "SBC/", "")
txtStockCode.Text = Replace(txtStockCode.Text, "*", "")
End If
End If
End If
Exit Sub
比方说,当前的重点是股票代码TextBox
。
如果扫描了条形码,则应该发生以下情况:
股票代码长度大于5
不留5个字符 =“ C /”,因此已扫描了正确的代码
TextBox
文本值已更新,以删除所有*和前缀“ SBC /”
例如“ SBC / A12-TR0 *”变为“ A12-TRO”
和
证书编号长度大于5
剩下的5个字符 do =“ C /”,因此已扫描了不正确的代码
MsgBox
给用户
TextBox
的值重置为“”
但是,无论将哪个代码扫描到股票代码TextBox
中,都永远不会验证该值。
例如“ SBC / A12-TR0 *”保留为“ SBC / A12-TR0 *”,“ C / 29760”保留为“ C / 29760”
由于证书TextBox
中的验证码相同,因此重复相同的模式,反之亦然。
为什么我的值不更新,或者如何在触发_Change
之前验证输入?
编辑
我现在将代码更改为
Private Sub txtStockCode_Change
If txtStockCode.Text <> "" Then
txtStockCode.Text = Replace(txtStockCode.Text, "SBC/", "")
txtStockCode.Text = Replace(txtStockCode.Text, "*", "")
End If
End Sub
但是它仍然显示SBC /的前缀,但删除了两个*字符(在条形码的开头和结尾,这是扫描仪将其读取为条形码所必需的)
答案 0 :(得分:0)
您可以尝试将条形码阅读器设置为在扫描的条形码末尾返回Enter键,然后使用Keypress事件进行检查并进行更改。
Sub txtStockCode_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
If Len(txtStockCode.Text) >= 5 Then
If bChangeCode Then
If Left(txtStockCode.Text, 2) = "C/" Then
msgbox "You have scanned the certificate barcode; please scan the stock barcode."
txtStockCode.Text = ""
Else
bChangeCode = False
txtStockCode.Text = Replace(txtStockCode.Text, "SBC/", "")
txtStockCode.Text = Replace(txtStockCode.Text, "*", "")
End If
End If
End If
End If
End Sub