我正在 Excel 电子表格中创建 VBA 宏。我注意到有时(通常在保存电子表格并重新打开后)一个或多个宏名称会从 更改为sheet1.macroname
。spreadsheetname.xls!macroname
这不是有效的宏名称,因此我无法再运行它。
我可以通过删除所有宏、保存结果、再次粘贴宏并再次保存来解决问题,但不能指望普通用户这样做。
有人知道是什么原因造成的吗?我该怎么做才能防止这种情况发生?
编辑更多细节
当我启动电子表格并显示宏对话框时,一个(有时是多个)宏的名称似乎从 更改为sheet1.macroname
。spreadsheet.xls!macroname
尝试通过双击运行此宏会产生错误消息“宏名称无效”。关闭错误消息框并再次双击会产生错误消息“引用无效”。后续尝试也会出现同样的情况。
sheet1.othermacro
通过双击调用另一个宏可以成功,并关闭宏对话框。重新显示时,第一个宏的名称已改回sheet1.macroname
。我想这确实解决了问题。
答案1
我偶然发现了解决方案。
仅当模块名称与宏名称相同时才会出现此问题。因此模块必须以不同的名称命名。就是这样!
答案2
我怀疑宏的名称实际上并没有改变:如果在打开多个工作簿的情况下从 Excel 打开“宏”对话框,则存储在当前活动工作簿中的宏将显示为MarcoName
。但是,存储在工作簿中的宏不是活动的显示为WorkbookName.xls!MacroName
。也就是说,你确定宏名称正在改变吗?
当您说无法再运行宏时,能否具体说明具体发生了什么?什么都没有?错误消息?
另外,您正在录制这些宏还是自己编写的?