如何根据另一个组合框条目

时间:2017-04-16 00:55:22

标签: vba excel-vba combobox excel

我有3个组合框,第一个包含主题,第二个组合框的级别像初学者 - 高级,然后第三个组合框有训练者名称。第二个和第三个组合框列表应根据第一个组合框中选择的条目而有所不同。我有一个"信息"具有2个表的工作表,其中我应该引用该列表,两个表都具有作为标题的主题,并且每个主题列列出了可用于每个所述主题的级别(在第一个表上)和训练者(在第二个表上)。我已将这些表(Levels and Trainers)命名为引用。

2 个答案:

答案 0 :(得分:0)

请参阅下面的代码段。在组合框更改事件中,清除组合框事件并在所需的组合框中填充新项目。

Private Sub cmblevels_Change()
    cmbTrainer.Clear
    Select Case LCase$(cmblevels.Text)
        Case "beginner"
            cmbTrainer.AddItem "trainer1"
            cmbTrainer.AddItem "trainer2"
        Case "advanced", "hard"
            cmbTrainer.AddItem "trainer3"
            cmbTrainer.AddItem "trainer4"
            cmbTrainer.AddItem "trainer5"
        Case "easy", "medium"
            cmbTrainer.AddItem "trainer3"
            cmbTrainer.AddItem "trainer6"
            cmbTrainer.AddItem "trainer7"
    End Select
End Sub

Private Sub cmbSubjects_Change()

    cmblevels.Clear
    Select Case LCase$(cmbSubjects.Text)
        Case "english"
            cmblevels.AddItem "beginner"
            cmblevels.AddItem "advanced"
        Case "maths"
            cmblevels.AddItem "easy"
            cmblevels.AddItem "medium"
            cmblevels.AddItem "hard"
    End Select

End Sub

答案 1 :(得分:0)

我还发现Select Case功能对此问题有帮助。我在我的" Info"中创建了命名区域的位置。工作表和我使用这些范围列出我需要在我的Levels组合框和Trainers组合框中显示的内容。下面的代码有效,如果您注意到,“培训师名称”组合框位于另一个用户表单中。

 Private Sub cmbSubject_Change()
     Me.cmbLevel = ""

     Select Case Me.cmbLevel
         Case "English"
             Me.cmbLevel.RowSource = "English"
             frmTrName.cmbTrSubj.RowSource = "trEng"

         Case "Math"
             Me.cmbLevel.RowSource = "Math"
             frmTrName.cmbTrSubj.RowSource = "trMath"

         Case "Sciences"
             Me.cmbLevel.RowSource = "Sciences"
             frmTrName.cmbTrSubj.RowSource = "trSci"
     End Select

 End Sub

希望这有帮助!