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

时间:2012-06-16 09:02:53

标签: vba

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

例如:

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

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

2 个答案:

答案 0 :(得分:7)

对于您想要的VBA列表框:

  1. 声明两列(ColumnCount = 2)。
  2. 隐藏第二个:ColumnWidths = ";0"
  3. 将第二列声明为绑定(BoundColumn = 2),将第一列声明为文本(TextColumn = 1)。
  4. 有一个添加值的过程:

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

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

答案 1 :(得分:3)

另一种方式......使用收藏。

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

快照

enter image description here