Excel VBA如何同时选中同一工作表内的两个PivotTable
Excel VBA 同时选中同工作表多个数据透视表方案
问题原因
连续调用Range.Select方法时,后续的选中操作会自动替换前一次的选中结果,因此逐次执行两个透视表的Select语句最终只会保留最后一次执行的选中区域,无法实现同时选中的效果。
补充范围说明:
TableRange1仅包含透视表行标签、列标签、数据主体区域,不包含顶部报表筛选(页字段)区域;TableRange2会覆盖包含页字段在内的整个透视表占用范围,可根据实际需求选择。
正确实现代码
通过Union方法将多个透视表的占用范围合并为一个复合区域,再执行一次选中操作即可同时选中所有目标透视表:
Sub SelectMultiPivotTables() Dim PT1 As PivotTable Dim PT2 As PivotTable Dim selectRng As Range ' 绑定当前工作表的两个目标透视表 Set PT1 = ActiveSheet.PivotTables(1) Set PT2 = ActiveSheet.PivotTables(2) ' 合并两个透视表的范围,需包含页字段可将TableRange1替换为TableRange2 Set selectRng = Union(PT1.TableRange1, PT2.TableRange1) ' 执行选中 selectRng.Select End Sub
扩展说明
- 若需要选中3个及以上透视表,直接在
Union参数中追加对应透视表的范围即可,示例:Union(PT1.TableRange1, PT2.TableRange1, PT3.TableRange1) - 执行代码前需确认当前活动工作表内存在对应数量的透视表,否则会触发下标越界错误
- 若多个透视表范围存在重叠,
Union方法会自动对重叠区域去重,不影响选中效果
内容的提问来源于stack exchange,提问作者Leonardo444
相关产品推荐
相关产品推荐

