切片器筛选变更时自动更新Excel图表的问题求助
问题解决步骤
错误原因分析
出现“编译错误:未定义子程序或函数”,本质是事件代码找不到AdjustVerticalAxis宏的有效调用路径,或事件代码存放位置错误。
具体修复方案
1. 确认事件代码的存放位置
Worksheet_PivotTableUpdate是工作表级事件,必须放在数据透视表所在的工作表模块中:
- 右键点击数据透视表所在的工作表标签 → 选择「查看代码」
- 将你的事件代码粘贴到这个模块内(不要放到标准模块或ThisWorkbook模块)
2. 检查AdjustVerticalAxis宏的作用域与位置
- 如果宏放在标准模块(如Module1):
确保宏的声明是Public,否则事件代码无法跨模块调用。修改宏的开头:Public Sub AdjustVerticalAxis() ' 你的坐标轴调整代码 End Sub - 如果宏和事件代码放在同一个工作表模块:
宏可以是Private,但要确保名称完全一致(包括空格、大小写,VBA不区分大小写,但尽量完全匹配)
3. 验证数据透视表名称正确性
检查Target.Name = "Pivot Table1"中的名称是否和实际数据透视表名称一致:
- 选中数据透视表 → 切换到「数据透视表工具-分析」选项卡 → 查看「属性」组中的名称
4. 替代方案:使用工作簿级事件
如果工作表级事件仍不触发,可以改用Workbook_SheetPivotTableUpdate,放在ThisWorkbook模块中:
Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable) If Target.Name = "Pivot Table1" Then AdjustVerticalAxis ' 直接调用宏,无需Call关键字 End If End Sub
内容的提问来源于stack exchange,提问作者patri729
相关产品推荐
相关产品推荐

