作业帮 > 综合 > 作业

我想问下 无论什么品牌的扫描枪有没有这种功能:在EXCEL表扫描条码时会录入数据,再扫描相同条码会清除数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 08:58:14
我想问下 无论什么品牌的扫描枪有没有这种功能:在EXCEL表扫描条码时会录入数据,再扫描相同条码会清除数
就是第一遍是录入数据,第二次扫描到相同条码时可以消除该数据(普通情况下应该是重复录入),类似于入库、出库的原理!
有没有这样的扫描枪可以通过设置扫描枪的设置实现吗?或者借助软件程序实现?
扫描枪是不会有这种功能的,因为扫描枪只是一个输入设备(相当于 另类的键盘)而已,只有输入字符到Excel中的功能,不会有查找、定位、替换的 判断与操作功能.
这种判断与操作,只能由软件提供,可以由输入设备的输入来触发软件去执行.
可以用VBA写一段代码到Ecxel中,在你输入内容时,立即查找当前表,找到有其他相同的,就清除之.
晚些时间,我可以帮你写一下.
GoodLuck!
---------------------------------------
因为楼主并没有说明你是如何录入的(比如:是固定在一个单元格中输入,还是随机在任意单元输入),我针对随机单元格录入的情况,写了一段.功能如下:
1)支持在一个工作表的任意单元格输入数据;
2)在录入完成后,Excel自动检查是否存在另一个单元格的内容与所录入内容完全相同;
3)如存在,则清除当前单元格与所找到单元格的内容;
4)光标自动定位到所清除的两单元格中 行号小的那一个上,以便继续录入;
5)如不存在,则什么都不做,就是正常录入了一个单元格数据;
在需要此功能的那个工作表标签上点右键,选择“查看代码”打开宏编辑器,在右边的空白处贴上如下代码,就可以实现上述功能,全自动工作,无需手工执行宏(也就是说,你只要用扫描枪连续扫描就OK了,仿佛是的扫描枪具有了楼主所述的功能一样.):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim m As Range,str As String
Application.EnableEvents = False
str = Target.Text
If str "" Then
For Each m In Range(Range("A1"),ActiveCell.SpecialCells(xlLastCell))
If Not (m.Row() = Target.Row() And m.Column() = Target.Column()) And m.Text = str Then
m.ClearContents
Target.ClearContents
If m.Row() < Target.Row() Then m.Select Else Target.Select
Exit For
End If
Next m
End If
Application.EnableEvents = True
End Sub
另,如果因为异常,导致宏不自动动作了,请关闭 Excel(不是这个文件,而是整个Excel)并重新打开,就能恢复自动了.
有疑问,请Hi我或给我发百度消息
GoodLuck!
再问: 真的 超感谢 非常感谢!我现在也明白借助一些外在的软件程序才能实现 你给的代码我已经试过,效果果然跟扫描枪自带功能一样~感谢大侠! 另外我还想请教个问题,比如说现在在一张空白EXCEL表格中,我想在A栏和D栏之间输入数据,例如A是产品代码,D是该产品的型号代码,如何在扫完A后记录下,光标自动跳到D栏,下个扫的型号代码就会自动输入D栏,然后下面又会跳到A2继续输入产品代码,扫完去D2输入型号代码。。如此循环下去 期待
再答: 与上面的方法一样,只是代码换成这样: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column() = 1 Then Cells(Target.Row(), 4).Select ElseIf Target.Column() = 4 Then Cells(Target.Row() + 1, 1).Select End If End Sub 有疑问,请Hi我或给我发百度消息 GoodLuck!