1

我在数据采集领域工作,我们的客户需要一种在多达 256 个输入通道上轻松设置多个设置的方法。每个通道需要 4 个组合框来表示所有可配置选项。这是一个链接到它的样子。

这些组合框在运行时使用以下方法循环创建:

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 倍,令我惊讶的是,还大大简化了代码!谢谢!

4

1 回答 1

3

也许您可以考虑使用in cell 下拉列表而不是组合框。
就像这里描述的一样。我认为它也会显示出更好的性能。

编辑:我用宏记录器捕获了一个代码(我只消除了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.

于 2013-01-03T23:06:24.607 回答