You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel宏运行时错误1004:无法执行getUnits宏的解决方案求助

解决Excel宏运行时错误1004:无法访问getUnits宏的问题

问题根源分析

  • 你录制的Makro1里出现Application.Run "getUnits",是因为录制过程中触发了本地环境独有的宏——这个getUnits要么在你的个人宏工作簿(Personal.xlsb)里,要么是某个本地加载项、其他工作簿中的宏,同事的Excel环境里没有这个宏,所以触发1004错误。
  • 宏录制会完整捕获操作时的所有后台动作,哪怕你没手动运行getUnits——比如切换工作表时触发了绑定getUnits的事件、自定义按钮,或是加载项自动调用了它,都会被记录进代码。

解决方案

方案1:移除不必要的getUnits调用(优先推荐)

从代码逻辑看,Makro1的核心是用GoalSeek计算回收期,getUnits大概率是你本地的辅助宏,直接删除这两行调用即可:

Application.Run "getUnits"

优化后精简代码(去掉冗余的滚动、选择操作,不影响核心功能):

Sub Makro1()
'
' Makro1 Makro
' Výpočet doby návratnosti
'
' Klávesová skratka: Ctrl+r
'
Sheets("Doba návratnosti").Range("G24").GoalSeek Goal:=0, ChangingCell:=Sheets("Doba návratnosti").Range("D24")
Sheets("Výsledky").Select
End Sub

方案2:嵌入getUnits宏到当前工作簿

如果确实需要getUnits的功能,把它的代码整合到当前工作簿:

  1. 打开你的宏工作簿,按Alt+F11打开VBA编辑器
  2. 右键点击当前工作簿的模块列表,选择插入>模块
  3. 找到你本地getUnits的完整代码,粘贴到新模块中
  4. 保存工作簿为.xlsm格式,重新发给同事

方案3:检查同事的宏安全设置

让同事确认以下设置:

  • 打开Excel选项>信任中心>信任中心设置>宏设置,选择启用无数字签署的所有宏
  • 若getUnits来自加载项,确保同事安装了同款加载项并启用

关于录制宏时出现getUnits的疑惑

宏录制会捕获操作时的所有后台行为,包括:

  • 切换工作表时触发了Worksheet_Activate事件,该事件里调用了getUnits
  • 你点击的自定义按钮绑定了getUnits宏
  • 本地加载项在操作时自动运行了getUnits
    这些动作都会被记录进Makro1,所以宏名显示为Makro1,但代码里会出现对getUnits的调用。

内容的提问来源于stack exchange,提问作者Richard Wagner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:22:50