【问题标题】:Implement search box into current worksheet with macro使用宏将搜索框实现到当前工作表中
【发布时间】:2015-09-11 11:07:21
【问题描述】:

我的宏目前通过按 CTRL+F 打开搜索 REF1 或 REF2 的搜索框来工作。如果找到信息,它会复制到下一个单元格,以显示它在那里。如果未找到该信息,它将在单元格 L4 中粘贴搜索到的数据,以便打印标签。

我正在尝试做的事情:

删除 CTRL+F 并基本上从一个单元格(比如说单元格 L18)运行。但是,扫描时,扫描仪基本上会输入数字,然后按回车键。

我在想,有没有可能让它像这样运行。

选择单元格 L18,然后继续扫描直到:
A) 清单已完成 - 没有任何遗漏
B) 如果 REF1/REF2 不匹配,则将该数据粘贴到单元格 L4 以打印要打印的标签。

(当前版本使用 CTRL+F):http://oi39.tinypic.com/mima9x.jpg

(我需要的示例):http://oi42.tinypic.com/24fiwt1.jpg

当前宏:

    Sub Extra_Missing_Item()   Application.ScreenUpdating = False
   Dim rangeToSearch As Range
   With Sheets(1)
      Set rangeToSearch = .Range("A2:B" & .Range("A" & .Rows.Count).End(xlUp).Row)
   End With


   Dim searchAmount As String
   searchAmount = InputBox("Scan the REF1 or REF2:")


   Dim cell As Range


   Set cell = rangeToSearch.Find(searchAmount, LookIn:=xlValues)
   With Sheets(1)
      If Not cell Is Nothing Then
        .Range("E" & cell.Row & ":G" & cell.Row).Value = _
           .Range("A" & cell.Row & ":C" & cell.Row).Value
      Else
MsgBox "REF1/REF2: " & searchAmount & " shouldn't be here"
        .Range("L4").Value = searchAmount
            Range("L9").Select
      End If
   End With


   Application.ScreenUpdating = True
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    我想我明白你需要什么。每次工作表上的任何单元格更改时都会调用此宏(但如果更改的单元格不是L18,则宏不执行任何操作):

    Private Sub Worksheet_Change(ByVal Target As Range)
    
        If Application.Intersect(Target, Range("L18")) Is Nothing Then
            Exit Sub
        End If
    
    
        Dim rangeToSearch As Range
        Dim searchAmount As String
        Dim cell As Range
    
        Application.ScreenUpdating = False
        Application.EnableEvents = False
    
        Set rangeToSearch = Range("A2:B" & Range("A" & Rows.Count).End(xlUp).Row)
    
        searchAmount = Target.value
    
        Set cell = rangeToSearch.Find(searchAmount, LookIn:=xlValues)
        If Not cell Is Nothing Then
            Range("E" & cell.Row & ":G" & cell.Row).value = _
            Range("A" & cell.Row & ":C" & cell.Row).value
        Else
            MsgBox "REF1/REF2: " & searchAmount & " shouldn't be here"
            Range("L4").value = searchAmount
        End If
    
        Range("L18").Select
    
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    End Sub
    

    把这个宏放到Sheet模块(对应你的数据所在的sheet):

    【讨论】:

    • 这几乎是完美的!我现在唯一的问题是我使用激光扫描仪。扫描条形码时,它基本上输入数据 E.G. 1234567 然后按回车键。搜索后有什么办法(除非它不存在)它会再次选择 L18 单元格,这样我就可以不断扫描条形码,直到找到一个不存在的条形码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多