访问组合框列表索引,运行时错误"438",xls vs xlsm?



我有一个代码,从一个excel工作表中获取值,并将它们放入另一个工作表中的相同位置。这包括组合框索引和单元格值。两个电子表格具有相同的结构和相同的表单元素,但其中一个表格的标题图像不同。

这里是出错的那行:

    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,然后用新的文件名重新运行代码,结果出错了。

任何想法?

是否有一些事情发生后。xlsm文件由excel打开,我的vba宏丢失?

谢谢你的帮助!

通过OLEObjects集合引用控件:

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

最新更新