如何创建一个不是 ActiveX 控件的"two-column"下拉框,我可以在其中以编程方式填充此框并在 Excel VBA 中使用它?



背景

假设我有一个从数据库中检索到的(id, description)对的示例列表,该列表如下所示:

1, aadvark
2, bubbles
3, carrot
4, depict

我想做的事:

我希望能够:

  1. 以编程方式将检索到的对从数据库复制到下拉框中,用户可以在其中选择一个列表选项
  2. 让用户能够从上面的列表中选择所需的description
  3. 以编程方式使用id,例如,在MsgBox弹出窗口中显示id以确认用户的选择

到目前为止我做了什么

我可以用ActiveX组合框控件来实现这一点,在这里我设置了两列,第一列得到id,第二列得到description。用户选择一个描述,我在内部使用生成的id进行进一步处理。但是,我遇到了ActiveX控件无法解决的问题,所以我正在寻求不同的方法,希望使用不同的方法不会出现问题。

"表单控制"组合框可以执行类似的操作吗?还是直接使用Excel单元格?请告知。理想情况下,我正在寻找一个包含代码的答案,其中所需的功能可以通过Form Control组合框或Excel的Cell结构和其他本地设施来实现。

您可以使用Form Control组合框。

我目前没有英文版的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

此链接显示了可能有用的各种示例。

相关内容

最新更新