【问题标题】:Vba: SOLVING COMBOBOXVba:解决组合框
【发布时间】:2015-05-12 15:21:55
【问题描述】:

基本上,我的用户表单中有两个使用 vba 语言的组合框。我的问题是我想根据用户在组合框 1 中的选择在组合框 2 中自动显示数据。对 vba 语言有什么建议吗?

Private Sub UserForm_Initialize()
Dim Student() As Variant
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Student = Selection
Me.ComboBox1.List = Student
End Sub

【问题讨论】:

  • 你有一些源代码可以在这里发布吗?
  • 您是否尝试过此处提到的更改事件:stackoverflow.com/questions/24090182/…
  • @kobusSmit..我已经尝试过了,你可以在上面看到我的代码。
  • @NewUser 您上面的代码只是用选项填充ComboBox1,不多不少。有关如何填写 ComboBox2 关于 ComboBox1 值的更多信息,请参阅我的答案

标签: vba


【解决方案1】:

以下是此类链接选择的基础知识:

您的代码,没有无用(和贪婪).select,有更好的方法来获取最后使用的行并使用.Value 将范围分配给数组:

Private Sub UserForm_Initialize()
Dim Student() As Variant
    Student = Range(Range("A2"), Range("A" & Rows.Count).End(xlUp)).Value
    Me.ComboBox1.List = Student
End Sub

还有你需要处理的部分:

当您更改 ComboBox1 的值时,它会启动该代码,因此您需要在那里刷新 ComboBox2 中建议的值您自己的测试,因为我们不知道您在做什么。

Private Sub ComboBox1_Change()
Dim RestrictedChoices()
Me.ComboBox2.Clear 'Clear all previously added elements
Me.ComboBox2.Value=vbNullString 'Set active value as an empty string

'------Here is where you need to do your tests-------
'if Me.ComboBox1.Value<> ?? then
'Else
    Me.ComboBox2.AddItem "Array filled or item, after test on Me.ComboBox1.Value"
'End If

End Sub

【讨论】:

    猜你喜欢
    • 2015-01-04
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多