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

VBA生成含Mandat、Montant RI字段的Pivot Table运行报错求助

VBA创建数据透视表报错问题排查与修复

现有代码错误点

  • 创建透视表时TableDestination参数错误:要求传入单元格范围对象,原代码传入了工作表对象,应使用提前定义好的目标起始单元格rangeTarget
  • 字段方向设置错误:
    • Mandat作为行标签,对应方向应为xlRowField,原代码错误使用了列字段参数xlColumnField
    • montant RI作为值字段,对应方向应为xlDataField,原代码错误使用了列字段参数xlColumnField
  • 代码健壮性不足:已经通过Set tcd1拿到了透视表对象,不需要再通过ActiveSheet.PivotTables("TCD 1")的方式调用,避免工作表未激活导致的调用错误

额外注意事项

  • 字段名需要和源数据表的表头完全一致,注意大小写、空格是否匹配,比如源表头如果是小写开头的montant RI,代码里写Montant RI也会报错
  • 重复运行代码前请先删除目标工作表中已存在的TCD 1透视表,避免同名创建报错

修正后完整代码

Sub TCD_MANDAT()
    '
    ' 
    ' Etiquette de ligne : Mandat -> 1ere colonne
    ' En valeur : montants RI -> 2ème colonne
    '
    
    'Source and Target
    Dim TableSource As Worksheet
    Set TableSource = Application.Workbooks("OP TEFAL AUTOMATIQUE.xlsm").Worksheets(2)
    
    Dim TableTarget As Worksheet
    Set TableTarget = Application.Workbooks("OP TEFAL AUTOMATIQUE.xlsm").Worksheets(4)
    
      
    Dim rangeSource As Range
    Set rangeSource = TableSource.Range("A1").CurrentRegion
    
    Dim rangeTarget As Range
    Set rangeTarget = TableTarget.Range("A1")
    
    'Decla variable
    Dim tcd1 As PivotTable, tcdCache As PivotCache

    Set tcdCache = ActiveWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=rangeSource)

    'Creation pivot table from cache
    Set tcd1 = tcdCache.CreatePivotTable( _
        TableDestination:=rangeTarget, _
        TableName:="TCD 1")
        
        
    'Création des étiquettes et valeurs
    With tcd1.PivotFields("Mandat")
        .Orientation = xlRowField
        .Position = 1
    End With
    
    With tcd1.PivotFields("Montant RI") ' 注意此处字段名需和源数据表头完全一致
        .Orientation = xlDataField
        .Position = 1
    End With
    
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:54:00