VBA:TextBox和ListBox

时间:2016-09-26 19:41:35

标签: vba excel-vba textbox listbox excel

在我的UserForm我有一个TextBox,其中写下我的序列号,类似于421012。 在它下面我有一个ListBox,其中包含“工具,工作台,轮子”等选项

我正在做的事情:

在我输入我刚刚输入的Serial后,我点击了ListBox中的一个选项,它应该在我的Serial后面添加一个值。

像这样:421012 +“选择工具”= 421012 15

“替补席”将得到421012 45

的结果

到目前为止我的代码:

Private Sub UserForm_Initialize()
With ListBox1
.AddItem "Tools"
.AddItem "Bench"
.AddItem "Wheel"
End With
End Sub

不知怎的,我必须告诉VBA工具等于15或等于45等等。

2 个答案:

答案 0 :(得分:1)

添加第二列,然后在进行值的连接时引用该列。 “42012”& me.listbox.column(1)应返回所选内容的值

with listbox
    .columncount = 2
    .additem
    .list(1,0) = "Tools"
    .list(1,1) = 15
    .list(2,0) = "Bench"
    .list(2,1) = 45
    .list(3,0) = "Wheel"
    .list(3,1) = 75
end with

答案 1 :(得分:1)

我使用对象比使用内部类型更频繁,但另一种选择是存储包含键入ListBox项目的查找的字典:

'Module level variable
Private SerialLookup As Scripting.Dictionary

Private Sub UserForm_Initialize()
    Set SerialLookup = New Scripting.Dictionary
    With SerialLookup
        .Add "Tools", "15"
        .Add "Bench", "45"
        .Add "Wheel", "42"
    End With

    ListBox1.List = SerialLookup.Keys()
End Sub

然后,您可以使用它作为词典的索引来检索您需要的任何值,即:

TextBox1.Value = "421012" & SerialLookup.Item(ListBox1.Value)