【问题标题】:How can I distinguish the text displayed in a listbox from a real value.?如何区分列表框中显示的文本和实际值。?
【发布时间】:2012-06-19 04:46:29
【问题描述】:

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

例如:

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

等等

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

【问题讨论】:

    标签: vba


    【解决方案1】:

    对于您想要的 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
      

    现在,对于单选列表框,您可以使用.Value.Text 来查找选定的值/文本。

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

    【讨论】:

      【解决方案2】:

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

      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
      

      快照

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 2014-04-10
        • 2021-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多