我有一个代码,它从一张excel表中获取值,并将它们放入另一张表中的相同位置。这包括ComboBox索引以及Cell值。两个电子表格都具有相同的结构和相同的表单元素,但是一个表单具有不同的图像作为标题。
这里出现错误的行:
Workbooks(Template).Sheets(Sheet1).ComboBox12.ListIndex = Workbooks(OriginalFile).Sheets(Sheet1).ComboBox12.ListIndex
Template
和OrignalFile
是文件名,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宏丢失了吗?
我感谢任何帮助!!!
答案 0 :(得分:1)
通过OLEObjects集合引用控件:
Workbooks(Template).Sheets(Sheet1).OLEObjects("ComboBox12").Object.ListIndex = Workbooks(OriginalFile).Sheets(Sheet1).OLEObjects("ComboBox12").Object.ListIndex