在 ComboBox 输入范围属性中使用 Excel 表列

在 ComboBox 输入范围属性中使用 Excel 表列

我在 StackOverflow 上提问了这个问题,然后被重定向到这里。抱歉重复了。

我有一张 Excel 工作表,其中 Sheet1 上有一个组合框,该组合框通过其输入范围属性从 Sheet2 上的动态命名范围填充。它运行良好,不需要 VBA。

Sheet2 上的数据实际上是在 Excel 表中(所有数据都在 XLS 文件中,没有外部数据源)。为了清楚起见,我想对组合框的输入范围使用结构化表格引用,但似乎找不到有效的语法,例如 myTable[[#Data],[myColumn3]]

我找不到任何迹象表明组合框将接受结构化表格引用,尽管我不明白为什么它不会接受。

因此,问题分为两部分:1. 是否可以在组合框输入范围属性中使用表列引用(不使用 VBA)以及 2. 如何操作?

答案1

我意识到这是一个相当老的问题,但万一有人像我一样在寻找解决同一问题时偶然发现它... 像 ScottieB 一样,我也无法让 dav 的答案对我有用。以下是我在 Excel 2013 中解决它的方法。

  1. 为组合框创建垂直选项列表。目前还不是表格,也没有标题(目前还未添加,但留出空间),只是一列,其中包含下拉列表所需的任何内容。

  2. 使用常规 Sheet1!$A$1:$A$2 符号为您的列表创建/定义名称。

  3. 使用刚刚为输入范围创建的名称插入组合框表单控件。

到目前为止一切顺利。组合框可以工作,但添加到垂直列表底部(甚至在命名范围正下方)的新选项将不会添加到下拉列表中;下拉列表所基于的命名范围不会动态扩展。

现在说说好的方面。

  1. 返回垂直列表(确保清除在命名范围周围添加的所有内容,使其与步骤 2 中的内容相同)并在其上方添加标题。任何文本都可以,它只是一个用于标识您的选择列表的标签。

(或者不!如果您允许,Excel 无论如何都会在下一步为您添加一个。)

  1. 选择标题后,使用 Ctrl+T 或插入 | 表格。接受 Excel 找到的范围,并确保选中“我的表格有标题”框,然后单击确定。您可以根据需要更改表格的名称:这无关紧要。

(注意:如果您没有添加标题,请不要选中“我的表格有标题”框以让 Excel 为您创建标题。)

现在 - 显然是因为原始命名范围现在是表定义的一部分 - 在垂直列表的底部添加新行不仅会自动扩展表定义,而且还会自动扩展原始命名范围的定义,因此新选项将出现在组合框的选择列表中。太神奇了!

答案2

如果您尚未创建表格,Nick 关于 XL 2013 的回答是可以的。

但是它比这更简单。您定义一个指向表列的名称。然后创建另一个指向第一个名称的名称。您可以在输入范围中使用第二个名称,这样就可以正常工作。

答案3

在 Excel 2010 中您可以执行此操作,但该过程分为两步。

  1. 使用表结构引用创建命名范围(例如 myrange=mytable[myColumn3]。
  2. 使用命名范围作为控件的输入范围。

而且,正如您所期望的,控制字段会随着列表的更改而更新。我不确定为什么不能直接在控件中使用引用 - 但我仍然对 Excel 有很多不明白的地方。

编辑:不要忘记从名称管理器中的表引用中删除@符号,否则您将只能获得验证集的相应行的值(例如[myColumn3]而不是[@myColumn3])。

相关内容