【问题标题】:VBA store string instead of range in ListFillRange ActiveX ComboBoxVBA 存储字符串而不是 ListFillRange ActiveX ComboBox 中的范围
【发布时间】:2012-01-23 15:01:26
【问题描述】:

我已经研究过但无法找到是否可以在 ActiveX ComboBox 中存储字符串而不是 Range。

我的工作簿具有如此多的依赖项,以至于每当用户输入任何类型的公式时,它都会重新计算 ComboBox(s) 等。我已将值粘贴在基于公式的基础范围中,这有助于并关闭计算无济于事。任何指导表示赞赏。

更新 - 组合框已绑定,这是设置范围的示例。

ThisWorkbook.Worksheets("Securities").OLEObjects("cboList").ListFillRange = "Securities!" & Range("mySecurities").Address

【问题讨论】:

  • 我认为混淆(就 OP 和回答者而言)与它们是 Excel 中两种基本类型的“组合框”有关。仅供参考,工作表本身有一个“活动 X”组合框(作为 OLEobject 嵌入)和基于 MSForms 的 activeX 组合框,可以完全从 VBA 访问。对于 OLEObject ,我认为这需要绑定到一个范围或一组字符串值(但不能同时绑定两者)。对于 MSForms 组合框,请参见下面 Rachel 概述的方法。
  • 我没有意识到 activex 有两个“组合框”,但这澄清了我的困惑。老实说,我可能会使用下面的版本,但我的老板希望它看起来像这样,所以我别无选择。我从你的评论中得知这是不可能的。感谢您的意见。
  • 没问题。是的,我认为这两者是为不同的目的而设计的。 Forms 种类通常是模态的,因此除非您使用 refedit 控件,否则您甚至无法在运行时选择 Range(假设您想更改它)。

标签: excel vba combobox


【解决方案1】:

使用 ControlFormat 属性的 AddItem 方法:

With Sheet1.Shapes("ComboBox1").ControlFormat
    .AddItem "Sunday"
    .AddItem "Monday"
    .AddItem "Tuesday"
End With

【讨论】:

  • 谢谢你的帖子......不幸的是,这在我的情况下不起作用,因为我已经绑定了它,即当你下拉它显示一个列表但当你选择它时显示另一个。我想我可以从返回中进行 vlookup,但如果我可以在绑定上下文中使用类似 .AddItem 的东西,我会更喜欢。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多