库管易

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

查看: 62339|回复: 10

在Excel里使用VBA实现:扫描枪自动匹配数据行,怎么做呀?

[复制链接]
10金钱
大神们,帮我实现一个vba,功能为扫描枪扫描后,自动查询到该行的信息,光标自动对应到那一行。
具体描述:
在execl的第一个表格中有订单数据每一列分别为:
发货日期
订单号
人名
邮编
地址
电话
2015/4/28
  310239-20150428-0431634224陈xx350001江苏南通00000
2015/4/28
  310239-20150428-0431634225陈xx350001江苏南通00000
2015/4/28
  310239-20150428-0431634226陈xx350001江苏南通00000
2015/4/28
  310239-20150428-0431634227陈xx350001江苏南通00000
2015/4/28
  310239-20150428-0431634228陈xx350001江苏南通00000
2015/4/28
  310239-20150428-0431634229陈xx350001江苏南通00000
2015/4/28
  310239-20150428-0431634230陈xx350001江苏南通00000
2015/4/28
  310239-20150428-0431634231陈xx350001江苏南通00000

2.我要实现的功能是:
当扫描枪读出订单号时,对应的那一列颜色变成红色,光标对到那一行。
订单号 不是完整的,只能做到 这么长:20150428-0431634224  所以订单号那一列 中只要包含这个20150428-0431634224的都标红,可以确定的是订单号是唯一的。

最佳答案

查看完整内容

Excel的VBA与函数不一样,并不是一段VBA代码就在任何地方通用,而是要根据具体的工作表、表格结构等,然后编写相应的代码。 像楼主所说的这个功能,可以分为以下几个步骤: 1、要有一个存储数据的工作表,这个工作表里填写好“条码”、“名称”、“规格”等。 2、在VBA工程中插入一个窗体,上面放一个文本框。 3、在数据工作表上加一个按钮,点击按钮:弹出上面设计的扫描窗口。 4、设置扫描窗口里的文本框的名称为TextBox1,那么 ...
回复

使用道具 举报

Excel的VBA与函数不一样,并不是一段VBA代码就在任何地方通用,而是要根据具体的工作表、表格结构等,然后编写相应的代码。

像楼主所说的这个功能,可以分为以下几个步骤:
1、要有一个存储数据的工作表,这个工作表里填写好“条码”、“名称”、“规格”等。
2、在VBA工程中插入一个窗体,上面放一个文本框。
3、在数据工作表上加一个按钮,点击按钮:弹出上面设计的扫描窗口。
4、设置扫描窗口里的文本框的名称为TextBox1,那么在TextBox1_Change的事件中添加查找代码。
5、查找代码的过程就是:取出所有数据、循环数据、对比数据行里的条码与文本框里的数字、如果相同就定位在那一行。
6、扫描枪在文本框TextBox1里扫描时条码时,就会自动调用TextBox1_Change事件代码。

其中,第5步的查找代码是关键,下面给你一段示例代码:
  1. '设工作表名称为“数据表”,工作表第一列为“条码”
  2. Private Sub TextBox1_Change()
  3.     '计算数据行的数量
  4.     Dim rowNum As Long
  5.     rowNum = Sheets("数据表").Range("A" & Sheets("数据表").Rows.Count).End(xlUp).Row
  6.     '取出工作表的数据
  7.     Dim crr
  8.     crr = Sheets("数据表").Range("A1:A" & rowNum)
  9.     '取出当前扫描的条码
  10.     Dim dangMa As String
  11.     dangMa = Trim(TextBox1.Text)
  12.     '循环所有数据,对比条码
  13.     Dim i As Long
  14.     For i = 1 To rowNum
  15.         '找到了与扫描相同的条码
  16.         If dangMa = Trim(crr(i, 1)) Then
  17.             Sheets("数据表").Range("A" & i).Select
  18.             Exit For
  19.         End If
  20.     Next
  21. End Sub
复制代码
回复

使用道具 举报

 楼主| 显示全部楼层
这是我做的订单模板 你看看 能不能帮我加进去下。

订单模板.xls

15.5 KB, 下载次数: 62, 下载积分: 贡献 -2

回复

使用道具 举报

楼主的表格结构就有问题,表格里没有“条码”这一列,那么你扫描出来的条码怎么能确定是哪一行的呢?
要想定位,首先你要设置好各行数据的条码,然后与扫描出来的条码逐条对比,相同的那一行就是当前扫描的条码。

回复

使用道具 举报

 楼主| 显示全部楼层
说明一下:条码,就是订单号那一列。
回复

使用道具 举报

kakaxx18 发表于 2015-4-29 10:45
说明一下:条码,就是订单号那一列。

上面给你说了步骤,而且写了示例代码,自己照着样子做一下吧,稍微改一下代码就能用了。
1、如果“订单号”就是“条码”,那么把代码里的A列,改成B列,也就是订单号所对应的列。
2、如果扫描出来的“条码”不完整,那么在比较时别用“=”,改用“InStr”函数,也就是“等于”改成“包含”。
回复

使用道具 举报

 楼主| 显示全部楼层
花生壳 发表于 2015-4-29 11:29
上面给你说了步骤,而且写了示例代码,自己照着样子做一下吧,稍微改一下代码就能用了。
1、如果“订单号 ...

vba 没有做过,完全不懂如何操作,如果可以帮我写个发给我,我qq是:34595595 谢谢啦。大神。
回复

使用道具 举报

这个是考验高手的
回复

使用道具 举报

我也在自学做这样一个程序
回复

使用道具 举报

花生壳 发表于 2015-4-29 11:29
上面给你说了步骤,而且写了示例代码,自己照着样子做一下吧,稍微改一下代码就能用了。
1、如果“订单号 ...

兄弟这个难吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|仓库管理网

GMT+8, 2024-4-26 19:59

Powered by 库管易

KuGuanYi.Com

快速回复 返回顶部 返回列表