【问题标题】:How do you correctly reference a dynamic list for the source of an Excel ComboBox?如何正确引用 Excel ComboBox 源的动态列表?
【发布时间】:2013-08-23 15:28:01
【问题描述】:

我的用户窗体上有两个组合框。第一个提供来自命名列表“类别”的选项。我在此 ComboBox 的行源中输入了单词 Category,它可以很好地为 Category 列表中的所有项目提供下拉菜单。

类别列表中的每个项目本身就是一个命名范围。我希望第二个 ComboBox(供应商)读取第一个中选择的项目,然后提供所选命名范围内的选项。目前它只提供每个命名范围中的第一项。我目前正在为第一个 ComboBox 使用以下代码。

Private Sub Category_Change()

Worksheets("Input").Range("D10") = Category.Value
'Worksheets("Input").Range("D10") = CStr(Worksheets("Input").Range("D10"))
Supplier.RowSource = Worksheets("Input").Range("D10")
End Sub

这会将为第一个 ComboBox 选择的值写入一个单元格,然后尝试让第二个 ComboBox 读取这个...

任何帮助都会很棒!

乔什

【问题讨论】:

  • Supplier.RowSource = Worksheets("Input").Range(CStr(Category.Value))
  • 我刚试了一下,它对我有用(Excel 2003)。您确定命名范围不仅仅包含顶部单元格吗?

标签: vba excel combobox


【解决方案1】:

您需要获取单元格D10中的文本指定的范围,而不仅仅是获取范围D10

将您的代码更改为:

Supplier.RowSource = Range(Worksheets("Input").Range("D10").Value)

【讨论】:

    【解决方案2】:

    谢谢各位。我相信你们都是对的。我偶然发现了问题的原因。

    我的主要列表被写成一个列 - RowSource 阅读它很好。

    我的二级列表都写成行——RowSource 只是从中提取第一项。将行重新排列为列并更新 Name Manager 对其进行排序。

    多么令人讨厌的答案...

    再次感谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-11
      • 2014-12-19
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多