1

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

这是错误的行:

    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 并使用新文件名重新运行代码,但它出错了。

有任何想法吗?

excel打开.xlsm文件后是否会发生我的vba宏丢失的情况?

我很感激任何帮助!!!

4

1 回答 1

1

通过 OLEObjects 集合引用控件:

Workbooks(Template).Sheets(Sheet1).OLEObjects("ComboBox12").Object.ListIndex = Workbooks(OriginalFile).Sheets(Sheet1).OLEObjects("ComboBox12").Object.ListIndex
于 2014-08-14T22:51:40.593 回答