【问题标题】:vba listbox value matches listvba 列表框值匹配列表
【发布时间】:2017-11-27 19:57:08
【问题描述】:

我有一个用户表单,他们应该从工作表中的表格中选择供应商,当他们按下“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

【问题讨论】:

  • id LstB_Supplier TextBoxListBox ?

标签: vba excel listbox


【解决方案1】:

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

例如在你的情况下:

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

【讨论】:

  • 谢谢,这让我更进一步。现在我又遇到了一件事情: Suppl = ListBox1(lItem) suppl 被定义为一个范围,但 listbox1(lItem) 是一个字符串,所以我得到一个类型不匹配。如果我将 suppl 定义为字符串,我会得到下一个错误:“对于每个控制变量必须是变量或对象”。我将在此论坛中再次搜索以找到答案。
  • 尝试将 suppl 定义为 ObjectVariant,正如它所说的那样。
猜你喜欢
  • 1970-01-01
  • 2022-11-10
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多