访问ComboBox ListIndex,运行时错误'''  xls vs xlsm?

时间:2014-08-14 22:12:49

标签: excel vba excel-vba combobox xlsm

我有一个代码,它从一张excel表中获取值,并将它们放入另一张表中的相同位置。这包括ComboBox索引以及Cell值。两个电子表格都具有相同的结构和相同的表单元素,但是一个表单具有不同的图像作为标题。

这里出现错误的行:

    Workbooks(Template).Sheets(Sheet1).ComboBox12.ListIndex = Workbooks(OriginalFile).Sheets(Sheet1).ComboBox12.ListIndex

TemplateOrignalFile是文件名,Sheet1是工作表标签名称,ComboBox12存在为" ComboBox12"在两个文件中。

所以这就是问题所在。当我运行首先打开两个文件然后运行一堆这些命令的脚本时,它会出错

    "Run-time error '438' Object doesn't support this property of method". 

但是,如果我在两个文件都已打开的情况下运行代码行,它就可以正常运行。

为了让事情变得更有趣,在97-2003 .xls文件上运行代码非常有效。似乎模板文件的版本并没有什么区别。仅当原始文件是.xlsm版本时,代码才会出错。 (我可以在他们从VBA窗口打开后继续运行)

为了证明它是导致行为更改的文件版本,我使用.xls文件,代码正常工作并将其保存为.xlsm并使用新文件名重新运行代码并且它出错了。< / p>

有什么想法吗?

在excel打开.xlsm文件后,我的vba宏丢失了吗?

我感谢任何帮助!!!

1 个答案:

答案 0 :(得分:1)

通过OLEObjects集合引用控件:

Workbooks(Template).Sheets(Sheet1).OLEObjects("ComboBox12").Object.ListIndex = Workbooks(OriginalFile).Sheets(Sheet1).OLEObjects("ComboBox12").Object.ListIndex