添加近1000个combobox时出错

我在数据采集领域工作,我们的客户需要一种方法来轻松设置多达256个input通道的设置。 每个通道需要4个combobox才能表示所有的可configuration选项。 这是一个看起来像什么的链接。

这些combobox在运行时使用以下方法在循环中创build:

Set obj = Worksheets("Synergy Setup").OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _ DisplayAsIcon:=False, Left:=ttl_width + cell_width, Top:=ttl_height, Width:=cell_width2, Height:=cell_height) 

一切工作正常约243通道(或接近1000combobox),然后我得到以下错误:

“自动化错误,元素未find,错误-2147319765”

使用MsgBoxes我已经确认,它确实是导致此错误的上述代码行,它只发生在接近1000combobox时。 此外,发生此错误后,我的Excel文件中的所有内容都被破坏了,并且我不断得到错误“对象库无效或包含对无法find的对象定义的引用”。 (编辑:不相关)

重申一下,这只会发生在大量的combobox。 有什么想法吗?

编辑:我想跟进并说,对单元格combobox的更改不仅解决了我的问题,而且加快了我的devise10倍,令我惊讶的是,大大简化了代码! 谢谢!

也许你可以考虑使用单元格下拉列表而不是combobox。
就像这里描述的那样 。 我认为它也会performance出更好的performance。

编辑:我用macroslogging器捕获代码(我只消除了select ):

 With Range("B:B").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=values_colors" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With 

您仍然可以捕获值的更改,请查看Worksheet_Change Event