Excel 2013访问Range.PivotCell报1004错误但高版本运行正常
Excel 2013透视表单元格判断1004错误修复
错误原因
Excel 2013的Range对象模型逻辑与2016及以上版本不同:当指定单元格不属于任何透视表时,直接访问PivotCell属性会直接抛出1004错误,而非像高版本一样返回Nothing。原代码的错误捕获逻辑没有适配该版本特性,因此会触发报错。
兼容全版本的修复代码
''判断指定单元格是否属于透视表,是则返回True Public Function ColumnBelongsToAPivot(ByVal ColumnLetter As String, ByVal RowIndex As Long, ByVal UseSheet As Worksheet) As Boolean ColumnBelongsToAPivot = False Dim Rng As Range Set Rng = UseSheet.Range(ColumnLetter & RowIndex) ' 适配低版本Excel访问PivotCell的错误特性 On Error Resume Next Dim tempPivotCell As PivotCell Set tempPivotCell = Rng.PivotCell On Error GoTo 0 If Not tempPivotCell Is Nothing Then ColumnBelongsToAPivot = True End If End Function
补充说明
- 该方案兼容Excel 2013及以上所有版本,不需要依赖额外引用,你之前添加的Microsoft Script Runtime和本问题无关联,可按需保留或移除
- 优化后剔除了原代码中无用的变量声明,运行效率更高
内容的提问来源于stack exchange,提问作者H BG
相关产品推荐
相关产品推荐

