2012-10-12 188 views
0

我想在另一個列表中根據用戶選擇填寫下拉列表。在線找不到與其相關的任何內容。基於另一個選擇列表動態更新選擇列表

我有一個名爲lookupDept包含下表工作簿:

A B 
== ============================== 
BS Business School 
CG Chemical Engineering 

其中列A具有定義的名稱DEPTCODE塔B具有定義的名稱DEPTNAME。我有一個名爲lookupModule一個第二個工作簿包含如下表:

A  B             C 
====== ================================================== == 
BSA005 Organisational Behaviour       BS 
BSA007 Skills for Study         BS 
CGA001 Fluid Mechanics I MEng & BEng Status    CG 
CGA002 Stagewise Processes         CG 

我試圖更新cbo_moduleCode我的形式來選擇的範圍中列AlookupDept列相匹配C in lookupModule。這是我使用的代碼:

因此,如果用戶挑選BS - 商學院形式(這從lookupDept工作簿中提取,我想包含BS所有字段列C 。在lookupModule工作簿中選擇的。這是我使用至今代碼:。

Private Sub UserForm_Initialize() 

    Dim c_deptCode As Range 
    Dim c_deptName As Range 

    Dim deptCodes As Variant 
    Dim deptNames As Variant 

    Dim ws_dept As Worksheet 
    Dim ws_misc As Worksheet 
    Set ws_dept = Worksheets("lookupDept") 
    Set ws_misc = Worksheets("lookupMisc") 

    ' Assign each range to an array containing the values 
    deptCodes = Choose(1, ws_dept.Range("deptCode")) 
    deptNames = Choose(1, ws_dept.Range("deptName")) 

    ' Create deptcode+deptname cbo 
    For i = 1 To ws_dept.Range("deptCode").Rows.Count 
     CombinedName = deptCodes(i, 1) & " - " & deptNames(i, 1) 
     cbo_deptCode.AddItem CombinedName 
    Next i 

End Sub 

回答

1

你可以嘗試添加對飛的項目一旦選擇了第一個組合框此代碼是一個樣本可能帶領您朝着正確的方向發展:

Private Sub cbo_deptCode_Change() 
Dim lLoop As Long, rgLoop As range 

For lLoop = 1 To Me.cbo_moduleCode.ListCount 

    Me.cbo_moduleCode.RemoveItem 0 

Next lLoop 

Sheets("lookupModule").[a1].CurrentRegion.AutoFilter 
Sheets("lookupModule").[a1].CurrentRegion.AutoFilter Field:=3, Criteria1:=Left(Me.cbo_deptCode.Value, 2) 

For Each rgLoop In Sheets("lookupModule").[a1].CurrentRegion.Offset(1).SpecialCells(xlCellTypeVisible).Columns(1).Cells 
    If Len(rgLoop) > 0 Then 
     Me.cbo_moduleCode.AddItem rgLoop & " - " & rgLoop.Offset(, 1) 
    End If 
Next rgLoop 

End Sub 
+0

是否有其他方法,您不必使用自動過濾器? – methuselah

+0

lookupModule – methuselah

+0

只有一行時,你看到的結果是什麼?是否有匹配的行,或根本沒有? – nutsch

相關問題