具体描述:
在execl的第一个
表格
中有订单数据每一列分别为:
发货日期
|
订单号
|
人名
|
邮编
|
地址
|
电话
|
2015/4/28
|
310239-20150428-0431634224
|
陈xx
|
350001
|
江苏南通
|
00000
|
2015/4/28
|
310239-20150428-0431634225
|
陈xx
|
350001
|
江苏南通
|
00000
|
2015/4/28
|
310239-20150428-0431634226
|
陈xx
|
350001
|
江苏南通
|
00000
|
2015/4/28
|
310239-20150428-0431634227
|
陈xx
|
350001
|
江苏南通
|
00000
|
2015/4/28
|
310239-20150428-0431634228
|
陈xx
|
350001
|
江苏南通
|
00000
|
2015/4/28
|
310239-20150428-0431634229
|
陈xx
|
350001
|
江苏南通
|
00000
|
2015/4/28
|
310239-20150428-0431634230
|
陈xx
|
350001
|
江苏南通
|
00000
|
2015/4/28
|
310239-20150428-0431634231
|
陈xx
|
350001
|
江苏南通
|
00000
|
2.我要实现的功能是:
当扫描枪读出订单号时,对应的那一列颜色变成红色,光标对到那一行。
订单号 不是完整的,只能做到 这么长:20150428-0431634224 所以订单号那一列 中只要包含这个20150428-0431634224的都标红,可以确定的是订单号是唯一的。
1、要有一个存储数据的工作表,这个工作表里填写好“条码”、“名称”、“规格”等。
2、在VBA工程中插入一个窗体,上面放一个文本框。
3、在数据工作表上加一个按钮,点击按钮:弹出上面设计的扫描窗口。
4、设置扫描窗口里的文本框的名称为TextBox1,那么 ...
1、要有一个存储数据的工作表,这个工作表里填写好“条码”、“名称”、“规格”等。
2、在VBA工程中插入一个窗体,上面放一个文本框。
3、在数据工作表上加一个按钮,点击按钮:弹出上面设计的扫描窗口。
4、设置扫描窗口里的文本框的名称为TextBox1,那么在TextBox1_Change的事件中添加查找代码。
5、查找代码的过程就是:取出所有数据、循环数据、对比数据行里的条码与文本框里的数字、如果相同就定位在那一行。
6、扫描枪在文本框TextBox1里扫描时条码时,就会自动调用TextBox1_Change事件代码。
其中,第5步的查找代码是关键,下面给你一段示例代码:
-
'设工作表名称为“数据表”,工作表第一列为“条码”
-
Private Sub TextBox1_Change()
-
'计算数据行的数量
-
Dim rowNum As Long
-
rowNum = Sheets("数据表").Range("A" & Sheets("数据表").Rows.Count).End(xlUp).Row
-
'取出工作表的数据
-
Dim crr
-
crr = Sheets("数据表").Range("A1:A" & rowNum)
-
'取出当前扫描的条码
-
Dim dangMa As String
-
dangMa = Trim(TextBox1.Text)
-
'循环所有数据,对比条码
-
Dim i As Long
-
For i = 1 To rowNum
-
'找到了与扫描相同的条码
-
If dangMa = Trim(crr(i, 1)) Then
-
Sheets("数据表").Range("A" & i).Select
-
Exit For
-
End If
-
Next
-
End Sub
复制代码
说明一下:条码,就是订单号那一列。
上面给你说了步骤,而且写了示例代码,自己照着样子做一下吧,稍微改一下代码就能用了。
1、如果“订单号”就是“条码”,那么把代码里的A列,改成B列,也就是订单号所对应的列。
2、如果扫描出来的“条码”不完整,那么在比较时别用“=”,改用“InStr”函数,也就是“等于”改成“包含”。