vba列表框值匹配列表

时间:2017-11-27 11:32:08

标签: excel vba excel-vba listbox

我有一个用户表单,他们应该从工作表中的表中选择供应商,当他们按下“ShowProducts”命令时,表单应该在下面的文本框中显示来自该供应商的所有文章。

我制作了以下代码,但它一直在行If Suppl.Value = Me.LstB_Supplier.Value Then上给我一个错误。

我搜索并尝试过在此网站和其他网站上找到的不同选项,但我似乎无法找到错误。

任何人都可以帮助我吗?谢谢!

Private Sub Cmd_ShowProducts_Click()

    Dim Suppl As Range
    Dim i As Integer

    For Each Suppl In Range("T_Prod_Fix[Supplier Name]")
        If Suppl.Value = Me.LstB_Supplier.Value Then
             With Me.LstB_Products
                 .AddItem
                 .List(i, 0) = Suppl.Offset(0, 1).Value   'article nbr
                 .List(i, 1) = Suppl.Offset(0, -1).Value  'article name
                 i = i + 1
             End With
          End If
     Next Suppl

End Sub

1 个答案:

答案 0 :(得分:0)

如果需要检查,列表框中选择的值是否存在于另一个列表中,则需要嵌套循环。使用第一个循环,您将获得所选值,并且使用内部循环,您需要检查它是否存在于您的范围内。

E.g。在你的情况下:

For lItem = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(lItem) Then 'Check for selection
        For Each suppl In Range("T_Prod_Fix[Supplier Name]")
            If suppl = ListBox1(lItem) Then
                'your logic
            End If
        Next suppl
    End If
Next lItem

相关:VBA to get values from a listbox on a spreadsheet in Excel