【问题标题】:How to list combo box data based on another combo box entry如何根据另一个组合框条目列出组合框数据
【发布时间】:2017-09-11 23:04:00
【问题描述】:

我有 3 个组合框,第一个包含主题,第二个组合框具有初学者高级级别,然后第三个组合框包含培训师姓名。第二个和第三个组合框列表应根据在第一个组合框中选择的条目而有所不同。我有一个“信息”工作表,其中有 2 个表,我应该在其中引用列表,两个表都将主题作为标题,每个主题列都列出了每个可用的级别(在第一个表上)和培训师(在第二个表上)说的主题。我已经命名了表(级别和培训师)以供参考。

【问题讨论】:

    标签: vba excel combobox


    【解决方案1】:

    见下面的代码 sn-p。在组合框更改事件中,清除组合框事件并在所需的组合框中填充新项目。

    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
    

    【讨论】:

      【解决方案2】:

      我还发现 Select Case 功能有助于解决这个问题。我在“信息”工作表中创建了命名范围,并将这些范围用于我需要出现在我的级别组合框和培训师组合框中的列表。下面的代码有效,如果您注意到,培训师姓名组合框在另一个用户表单中。

       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
      

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2013-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多