我在数据采集领域工作,我们的客户需要一种方法,可以在多达256个输入通道上轻松设置多个设置。每个通道需要4个组合框才能表示所有可配置选项。 Here is a link to what it looks like.
使用以下方法在运行时在循环中创建这些组合框:
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个频道(或接近1000个组合框),然后我收到以下错误:
“自动化错误,未找到元素,错误-2147319765”
使用MsgBoxes我已经确认它确实是前面提到的代码行导致了这个错误,它只发生在我接近1000个组合框时。 此外,发生此错误后,我的excel文件中的所有内容都被破坏,并且我不断收到错误“对象库无效或包含对无法找到的对象定义的引用”。(编辑:不相关)
重申一下,这只发生在大量的组合框中。有什么想法吗?
编辑:我想跟进,并说内置组合框的改变不仅解决了我的问题,而且加快了我的设计10倍,令我惊讶的是,大大简化了代码还有!谢谢!
答案 0 :(得分:3)
也许您可以考虑在单元格下拉列表中使用 而不是组合框。
Like e.g. described here。我认为它也会表现出更好的表现。
编辑: 我用宏录制器捕获了一个代码(我只删除了 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
。