如何解决如何创建一个不是 ActiveX 控件的“两列”下拉框,我可以在其中以编程方式填充此框并在 Excel VBA 中使用它?
背景
假设我有一个示例列表,其中包含从数据库中检索到的 (id,description)
对,并且列表如下所示:
1,aadvark
2,bubbles
3,carrot
4,depict
我想做什么:
我希望能够:
- 以编程方式将检索到的对从数据库复制到下拉框中,用户可以在其中选择列表选项之一
- 让用户能够从上面的列表中选择所需的
description
- 以编程方式使用
id
,例如,在id
弹出窗口中显示MsgBox
以确认用户的选择
到目前为止我所做的
我可以使用 ActiveX ComboBox 控件来做到这一点,我在其中设置了两列,第一列获得 id
,第二列获得 description
。用户选择一个描述,并在内部使用生成的 id
进行进一步处理。但是,我遇到了cannot resolve with the ActiveX controls的问题,所以我正在寻找不同的方法,希望不同的方法不会有问题。
可以用表单控件组合框做类似的事情吗?还是直接使用Excel Cells?请指教。理想情况下,我正在寻找一个包含代码的答案,其中可以使用 Form Control 组合框或 Excel 的 Cell 构造和其他本机设施来实现所需的功能。
解决方法
您可以使用表单控件组合框。
我目前没有英文版的 Excel 可供参考,我正在猜测实际的菜单项,但右键单击您嵌入的组合框,然后选择控制格式(?),然后在远处右选项卡(控制?),选择第一个文本框(输入范围?)并选择您的范围。
假设我在 WorkSheet 1 上有一个名为 cbTest 的组合框,在该工作表的模块中,我可以这样引用它。
Sub Test()
Dim oCBTest As Object
Set oCBTest = Me.Shapes("cbTest")
With oCBTest
Debug.Print .Name
Debug.Print .ControlFormat.ListCount
Debug.Print .ControlFormat.List(1)
End With
Set oCBTest = Nothing
End Sub
如果您不确定如何使用立即窗口,请将 Debug.Print
替换为 MsgBox
。
此 link 显示了可能证明有用的各种示例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。