【发布时间】:2017-09-11 23:04:00
【问题描述】:
我有 3 个组合框,第一个包含主题,第二个组合框具有初学者高级级别,然后第三个组合框包含培训师姓名。第二个和第三个组合框列表应根据在第一个组合框中选择的条目而有所不同。我有一个“信息”工作表,其中有 2 个表,我应该在其中引用列表,两个表都将主题作为标题,每个主题列都列出了每个可用的级别(在第一个表上)和培训师(在第二个表上)说的主题。我已经命名了表(级别和培训师)以供参考。
【问题讨论】:
我有 3 个组合框,第一个包含主题,第二个组合框具有初学者高级级别,然后第三个组合框包含培训师姓名。第二个和第三个组合框列表应根据在第一个组合框中选择的条目而有所不同。我有一个“信息”工作表,其中有 2 个表,我应该在其中引用列表,两个表都将主题作为标题,每个主题列都列出了每个可用的级别(在第一个表上)和培训师(在第二个表上)说的主题。我已经命名了表(级别和培训师)以供参考。
【问题讨论】:
见下面的代码 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
【讨论】:
我还发现 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
希望这会有所帮助!
【讨论】: