我有一个代码,从一个excel工作表中获取值,并将它们放入另一个工作表中的相同位置。这包括组合框索引和单元格值。两个电子表格具有相同的结构和相同的表单元素,但其中一个表格的标题图像不同。
这里是出错的那行:
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,然后用新的文件名重新运行代码,结果出错了。
任何想法?
是否有一些事情发生后。xlsm文件由excel打开,我的vba宏丢失?
谢谢你的帮助!
通过OLEObjects集合引用控件:
Workbooks(Template).Sheets(Sheet1).OLEObjects("ComboBox12").Object.ListIndex = Workbooks(OriginalFile).Sheets(Sheet1).OLEObjects("ComboBox12").Object.ListIndex