2017-03-16 100 views
0

我有以下代碼在用戶窗體中顯示客戶端和ID時生成多列組合框。我必須同時生成兩列作爲客戶端,並多次列出,但ID是唯一的。VBA使用多列組合框中的一列作爲變量

i = 2 

For Each c In Range("D2", Range("D" & Rows.Count).End(xlUp)) 
    CB_Account.AddItem Cells(i, 4).Value & " : " & Cells(i, 3).Value 
    i = i + 1 

Next 

但是我使用的值來選擇過濾器的片材,這樣我可以客戶端細節複製到新的片材和正在使用所選擇的值作爲變量:

MyAccount = UF_Format.CB_Account.Value 

的代碼是目前由於兩列連接中的組合框中的值而翻倒。真的,我需要通過第二個值作爲ID,以便我的代碼可以過濾。

任何幫助將不勝感激。

+0

這取決於列4和列3的值。如果你可以假定第3列總是三個字符,那麼你可以使用Right,如果你知道第4列只包含字母,你可以匹配一個模式來忽略字母和「:」,然後休息。如果沒有簡單的方法,你可能想要改變分隔符,例如到'|'。 – z32a7ul

+0

順便說一句,我不會稱這是一個多列組合框,它只是從Excel工作表的多列連接起來的值。 – z32a7ul

回答

0

您可以將變量MyAccount聲明爲數組,然後使用冒號作爲分隔符分割組合框值。然後您可以使用數組的第二項。

Sub second_value() 
    Dim MyAccount() As String 

    MyAccount = Split(UF_Format.CB_Account.Value, " : ") 
    Debug.Print MyAccount(1) 
End Sub 
+0

除第3欄或第4欄可以包含':'外。我會提供「:」(包括空格)作爲分割的第二個參數,所以你不需要修剪結果,也可能有其他效果。 – z32a7ul

+0

@ z32a7ul關於使用「:」作爲分隔符,我會更新答案。我不希望名稱或ID包含冒號,但當然你需要考慮這一點:) –