2016-09-26 84 views
0

在我UserForm我有一個TextBox哪裏是寫下我的序列號,像421012. 在它下面我有像「工具,臺式,輪」VBA:TextBox和ListBox中

選項列表框我'm試圖做的事:

當我輸入我剛纔輸入的序列號後,我點擊ListBox中的一個選項,它應該在我的序列號後面加上一個值。

事情是這樣的:421012 + 「選擇工具」= 421012

的 「板凳」 將獲得421012

到目前爲止我的代碼的結果:

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

不知何故,我必須告訴VBA Tools等於15或者Bench等於45等等。

+0

[可能相關(HT tp://codereview.stackexchange.com/q/140995/23788) –

回答

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

我剛剛提出這個建議。我個人將「值」列的列寬設置爲0。 – Comintern

+0

繼續獲取運行時錯誤381 – Alec

+0

我認爲@Comintern的答案更清晰。不知道腳本字典。很酷。 – geeFlo

1

我這個經常更使用與對象比固有類型的值,但另一個選擇是存儲包含查找字典鍵入您的列表框項目:

'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) 
+0

@ThomasInzina - 我如何總是忘記......編輯。 – Comintern

+1

我最酷的答案之一涉及使用字典鍵:[是否有可能使用自動過濾器或查找字典?](http://stackoverflow.com/questions/39162841/is-it-ppossible-to-use-autofilter-或者找到的-ON-A-詞典/ 39177064#39177064) – 2016-09-26 23:45:27