Vba 如何区分列表框中显示的文本与实际值。?

Vba 如何区分列表框中显示的文本与实际值。?,vba,Vba,我有一个带有多选选项的列表框。我使用addItem函数填充它。 我在谷歌上找不到任何关于这方面的文章,但我需要区分列表框中显示的文本和实际值 例如: shown hiddenvalue -------- ----------- monday A1 tuesday A2 wednesday C7 等等 可能吗?如何访问这些值?对于VBA列表框,您要: 声明两列(ColumnCount=2) 将第二个设置为隐藏:ColumnWidths=“;0” 将第二列声明为绑定(

我有一个带有多选选项的列表框。我使用
addItem
函数填充它。 我在谷歌上找不到任何关于这方面的文章,但我需要区分列表框中显示的文本和实际值

例如:

shown      hiddenvalue
--------   -----------
monday     A1
tuesday    A2
wednesday  C7
等等


可能吗?如何访问这些值?

对于VBA列表框,您要:

  • 声明两列(
    ColumnCount=2
  • 将第二个设置为隐藏:
    ColumnWidths=“;0”
  • 将第二列声明为绑定(
    BoundColumn=2
    ),将第一列声明为文本(
    TextColumn=1
  • 有一个添加值的过程:

    Private Sub AddWithID(Text As String, ID As String)
      ListBox1.AddItem Text
      ListBox1.List(ListBox1.ListCount - 1, 1) = ID
    End Sub
    
  • 现在,对于单选列表框,您可以使用
    .Value
    .Text
    查找所选值/文本


    对于多选列表框,您可以使用
    .List(i,0)
    作为文本,使用
    .List(i,1)
    作为值,其中
    i
    作为行的索引。

    另一种方式。。。使用集合

    Private HiddenValue As New Collection
    
    Private Sub CommandButton1_Click()
        AddItems "monday", "A1"
        AddItems "tuesday", "A2"
        AddItems "wednesday", "C7"
    End Sub
    
    Private Sub CommandButton2_Click()
        MsgBox "Shown Value :" & ListBox1.List(ListBox1.ListIndex) & vbNewLine & _
        "Hidden Value " & HiddenValue(ListBox1.ListIndex + 1)
    End Sub
    
    Private Sub AddItems(Text As String, ID As String)
        ListBox1.AddItem Text
        HiddenValue.Add ID
    End Sub
    
    快照