首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能用ComboBox撤消(撤消)引用具有命名范围的动态列表,重命名为数组?多么?

问不能用ComboBox撤消(撤消)引用具有命名范围的动态列表,重命名为数组?多么?
EN

Stack Overflow用户
提问于 2019-05-08 22:21:23
回答 1查看 56关注 0票数 0

我有一个ComboBox,它的列表引用了一个命名范围,该范围基于与链接到ComboBox的文本(链接到一个单元格)的匹配来创建动态列表。该列表具有匹配量的长度,ComboBox具有刷新它的ComboBox_Change。

现在我的问题是,我不能Ctrl+Z文档中的任何东西,这使得它很难使用。我曾经在工作表中的任何更改都会触发列表的问题,但自从我将命名范围"zone“更改为它的工作表而不是整个Excel (甚至奇怪地在它自己的工作表中)后,这个问题似乎已经停止了。命名区域中使用的单元格确实引用了另一个工作表。

我昨天看到了一个链接,其中有人提到会发生这种情况,因为每次更改都会刷新框,列表应该被“缓存”为数组(Why is a (Excel VBA) combobox change event triggering every time one of its properties is referenced?)。如果我的列表长度一直在变化,而且我不能一次ctrl+shift+enter 500个单元格,我该怎么做呢(这还能行吗?)

以下是一些代码和公式。我自由翻译的法语,所以可能会有公式打字错误。假设Sheet1是我的ComboBox所在的位置。

用于填充命名列表的单元格公式(我认为不太相关)

代码语言:javascript
复制
=IFERROR(INDEX(Sheet2!$H$2:$H$501;MATCH(ROWS(Sheet1!$B$1:B1);Sheet1!$B$1:$B$503;0));"")

我的ComboBox VBA如下:

代码语言:javascript
复制
Private Sub ComboBox1_Change()
    ComboBox1.ListFillRange = "DropDownList"
    Me.ComboBox1.DropDown
    Range("H1").Value = 1
End Sub

范围(“H1”)与此无关,它是为了重置计数,以便重置“下一个”和“上一个”图片按钮。

命名范围(动态长度),其中A给出我在ComboBox中“搜索”的1/0部分匹配,B给出我得到的部分匹配的数量,C列出从其他选项卡填充下拉列表的值。

我不认为这是有帮助的,但这里是这些论坛。No determined表示Sheet1。

答:

代码语言:javascript
复制
=--ISNUMBER(IFERROR(SEARCH(Sheet1!$D$1;Sheet2!H2;1);""))

B:

代码语言:javascript
复制
=IF(A1=1;SUMIF($A$1:A1;1);"")

C:

代码语言:javascript
复制
=Sheet1!$C$1:INDEX(Sheet1!$C$1:$C$503;MAX(Sheet1!$B$1:$B$503);1)

编辑:回应Nick,进一步澄清。我基本上是在寻找一种不同的方式来编写宏,这样它就不会在每个工作表更改后执行,即使那些不影响它的动态列表的更改也是如此。我忘了在主线程中提到,但是如果我的ComboBox是空的(所以从A列到C列没有过滤出任何东西,列表是“最大容量”),那么我的撤销工作很好,但是一旦在ComboBox (或匹配的单元格)中有一些东西,我就不能使用撤销。

EN

回答 1

Stack Overflow用户

发布于 2019-05-08 23:18:50

为了避免在引用list属性时更新工作表,可以将combobox_change事件替换为combobox_click或combobox_dropdownclick,后者仅在单击框本身或按下F4时更新框中的列表。

如果您想使用worksheet_change事件,您可以这样做

代码语言:javascript
复制
Worksheet_change (ByVal Target as Range)
 If Not Intersect (Target, Range("your named range"))  Is Nothing Then
   Combobox1.ListfillRange = range("Your named range")

这只会在目标范围发生变化时更新组合框。

通常,您不能在执行VBA代码后撤消,并且我不建议尝试创建自定义撤消方法。我只需要拷贝一张纸,然后用那份拷贝来修补。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56042944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档