繁体   English   中英

根据另一个表单值与工作表范围的匹配,分配和显示工作表中的表单值

[英]Assign and Display a Form Value from a Worksheet based on a Match of another form value against a Worksheet Range

Private Sub invItem_AfterUpdate()
 Dim sh As Worksheet
' Dim ckItem As Long

 Set sh = ThisWorkbook.Sheets("ACS_Report")
With Me
' ckItem = sh.Range("B:B").Value
    If WorksheetFunction.CountIf(sh.Range("B:B"), invItem) = 0 Then 'Checks to see if the scanned value exists.
       
        MsgBox "That Item ID does not exist."
            invItem.SetFocus     *This does not work the focus is not set back to invItem or the form.*
            
            Exit Sub
    End If
    
   iRow = WorksheetFunction.Match(invForm.invItem, sh.Range("B:B"), 0) 'Returns the Row number from the worksheet.
   invForm.invUnits = (sh(F) & iRow) *This does not work*
   '  Application.WorksheetFunction.VLookup(Me.invItem, ACS_Report.Range("Lookup") 2, False)
End With
    
End Sub

输入表单有三个输入,只有两个是用户输入。 用户将扫描项目 ID 表单将根据扫描输入更新单位并等待用户键入或扫描真实的单位 我还没有为此编写代码,因为我无法获取要更新的单位字段。 当它这样做时,实际单位需要添加到 invReal 中的任何值,无论它是零还是已经有一个数字。 输入完成后,它会更新电子表格并移回表格的开头以进行下一次库存更新。

我会 go 在这里使用 Vlookup - 如果有匹配项,您需要提取一个值,因此您可以在一次调用中执行此操作:

Private Sub invItem_AfterUpdate()
    Dim sh As Worksheet, m
    
    Set sh = ThisWorkbook.Sheets("ACS_Report")
    
    m = Application.VLookup(Me.invItem, sh.Range("B:F"), 5, False) 'no WorksheetFunction
    If Not IsError(m) Then 'check for no match
        Me.invUnits = m
    Else
        MsgBox "Item ID " & Me.invItem & " does not exist."
        invItem.SetFocus
    End If
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM