我有一个工作簿,其中有 4 张不同的工作表用于库存目的(每张工作表对应一种库存类型,以便于组织)。不是最好的设置,但我有一个条形码查找系统,我可以在其中扫描项目的条形码,Excel 会找到并突出显示相应的行(包含名称、图片、数量等信息),所有这些都是手动更新的。最初所有东西都在一张纸上,但最近我把它们分成了 4 张不同的纸。从那时起,条形码查找仅适用于原始库存表(有意义,因为代码仅适用于该表)。我一直无法弄清楚如何更改代码以在整个工作簿上工作。我想将工作表更改为工作簿(不起作用),然后我尝试添加一个Set ws = ThisWorkbook.Sheets("")
对于每张纸(也不起作用)和一些其他更改。如果有人对如何更改它有任何想法,以便它搜索工作簿而不是一张纸,我将不胜感激。这是第一张工作表的工作代码的副本:
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Inventory List")
Dim rangeToLook As Range
Set rangeToLook = ws.Range("C3:C1000")
Dim wholeRange As Range
Set wholeRange = rangeToLook.Resize(, 10)
' change 14408667 to yours grey color code here
wholeRange.Cells.Interior.Color = 14408667
Dim code As Variant
code = InputBox("Please scan a barcode and hit enter if you need to")
Dim matchedCell As Range
Set matchedCell = rangeToLook.Find(what:=code, LookIn:=xlValues, _
lookat:=xlWhole, MatchCase:=True)
If Not matchedCell Is Nothing Then
With matchedCell
Application.Goto .Cells(1)
.Resize(1, 10).Interior.ColorIndex = 20
End With
Else
MsgBox "Barcode Not Found"
End If
End Sub
提前感谢你的帮助。
试试这个代码:
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim rangeToLook As Range
Dim wholeRange As Range
Dim code As Variant
Dim matchedCell As Range
code = InputBox("Please scan a barcode and hit enter if you need to")
For Each ws In ThisWorkbook.Sheets
Set rangeToLook = ws.Range("C3:C1000")
Set wholeRange = rangeToLook.Resize(, 10)
wholeRange.Interior.Color = 14408667
Set matchedCell = rangeToLook.Find(what:=code, LookIn:=xlValues, _
lookat:=xlWhole, MatchCase:=True)
If Not matchedCell Is Nothing Then
With matchedCell
Application.Goto .Cells(1)
.Resize(1, 10).Interior.ColorIndex = 20
Exit For
End With
End If
Next
If matchedCell Is Nothing Then
MsgBox "Barcode Not Found"
End If
End Sub
我试过这个,不幸的是,它根本不起作用......它让我输入一个条形码,我输入了,然后它又问了 4 次(每张纸一次,没有让我停止这个过程)同时选择和突出显示每一页上的空单元格,而不是我正在寻找的一个项目。
这个看起来效果很好。我剩下的唯一问题是,在找到该项目后(它确实找到了它并选择了正确的单元格),我总是会弹出未找到条形码的弹出窗口(即使它确实找到了它)。根据我对代码的理解,我没有看到代码中的任何内容可以使它做到这一点。
你比我更了解这一点,所以我对这一点非常迷茫。看起来没有任何原因应该导致它......它每次都发生,可能是我的另一个代码导致了问题(我有另一个代码可以将所选项目移动到列表底部,如果它停止并且另一个自动调整照片大小以适应单元格)。我将不得不玩一下它,如果我到达任何地方,我会留下任何更新。
@intheend555 - 请尝试更新版本。我添加了 2 行。这基本上检查相同的事情,但不同。也许这会有所帮助。
@ZygD 新代码没有修复它,所以我把它改回了你放置的另一个代码,我
Exit For
在.Resize(1, 10).Interior.ColorIndex = 20
@ FaneDuru 发布后立即插入,看起来它现在运行没有任何问题。