当我在 Excel 中创建自定义下拉列表时,当我开始在下拉列表单元格中键入内容时,我的 Excel 表不会缩小为更小的列表。
例如,如果我的下拉列表是美国各州 [AL...WY],当我输入字符“N”时,为什么下拉列表没有提供选项子集 [...NY...NJ...]。子集自动完成功能可以实现吗?
注意:我创建了 Excel 下拉列表,如下所示: http://danielk.org/blog/2009/09/22/excel/
答案1
这是因为 Excel 中的数据验证不是这样工作的。您需要使用 Active X 控件。请参阅Contextures 数据验证页面总的来说,她的组合框数据验证和组合框依赖特别是例子。
更新
如果您确实使用了她的示例,请用 TempCombo_KeyUp 替换 TempCombo_KeyDown 事件处理程序。至少在我的 excel(excel 2003 SP2)上它会崩溃。
关于我指出的例子的更多细节:
我不确定为什么将 TempCombo_KeyDown 更改为 TempCombo_KeyUp 有效,但这可能与 KeyCode 有关。MSDN 暗示 KeyCode 实际上是一个指针,并且实际上通过 ref 传递,即使签名说的是 ByVal。崩溃总是发生在 TempCombo_KeyDown 的 End Sub 行上。
这只是我的猜测,但通过处理 KeyDown 事件,在新单元格被激活后,如果它具有 TempCombo,则该对象被激活并可以处理 KeyUp 事件。如果目标单元格未激活 TempCombo,则 KeyUp 事件没有有效的对象引用,并且您会遇到严重的崩溃。