.ClearTable 方法从单独的数据透视表中删除 CalulatedField

问题描述

我现在正在开发一个 Excel 工具,其中一部分是一个 vba 宏,它应该生成多个数据透视表作为输出。 我可能应该提一下,我绝不是一个专业的编码员,我所做的基本上都是边做边学。

所以我想要做的是生成一个包含数字列的数据透视表,然后是一个包含每行总和的计算字段,称为“总和”。 到目前为止,这是有效的。如果我第二次运行相同的宏,虽然我得到一个错误,因为具有相同名称的计算字段已经存在(从第一次运行开始)。 我通过在创建数据透视表后立即运行 .ClearTable 方法来解决这个问题。只要只有一张表,这就可以正常工作。

虽然我需要多个表,但如果我添加代码以在第一个表下添加第二个数据透视表,这将导致 2 个表,但只有第二个表会有“总和”列。 如果我转到第一个表,我可以再次激活“总和”列,但它会显示第二个表中的数字。 通过调试器,我发现当我在第二个表上运行 .ClearTable 时,第一个表的“sum”字段被删除。

对我来说可能是一个非常基本的错误,但我似乎无法弄清楚。我的代码的相关部分如下所示。然后再次运行相同的代码,唯一的变化是 TableName 是“table2”并且 PivotField 包含不同的数据源。

非常感谢任何帮助,谢谢。

    'Generate Table MNE 1'

If cbMNE1Value = True Then



    targetCell.Value = "Mindestnutzungsentgelt Zeitraum 1"
    Set targetCell = targetCell.Offset(1,0)
    targetCell.Select
    Set pt = ws.PivotTables.Add( _
        PivotCache:=pc,_
        TableDestination:=ActiveCell,_
        TableName:="Table1")           

    pt.ClearTable

    Set pf = pt.PivotFields("Name Kombi")
    pf.Orientation = xlRowField
    pf.PivotItems("").Visible = False
   

    If cbPoolvertragValue = False Then

        Set pf = pt.PivotFields("MNE V  Fl. A")
        pf.Orientation = xlDataField
        pf.Function = xlSum
        pf.NumberFormat = "0.00€"
       

        Set pf = pt.PivotFields("MNE V  Fl. B")
        pf.Orientation = xlDataField
        pf.Function = xlSum
        pf.NumberFormat = "0.00€"
       

        Set pf = pt.CalculatedFields.Add("Summe","=MNE V  Fl. A + MNE V  Fl. B")
        pf.Orientation = xlDataField
        pf.NumberFormat = "0.00€"

                                                             

        tableRowCount = pt.DataBodyRange.Rows.Count + 2
        Set targetCell = targetCell.Offset(tableRowCount,0)
        targetCell.Select

       

    ElseIf cbPoolvertragValue = True Then
        Set pf = pt.PivotFields("MNE V  Fl. B")
        pf.Orientation = xlDataField
        pf.Function = xlSum
        pf.NumberFormat = "0.00€"
       

        Set pf = pt.PivotFields("MNE V  Fl. Pool")
        pf.Orientation = xlDataField
        pf.Function = xlSum
        pf.NumberFormat = "0.00€"
       

        Set pf = pt.CalculatedFields.Add("Summe","=MNE V  Fl. B + MNE V  Fl. Pool")
        pf.Orientation = xlDataField
        pf.NumberFormat = "0.00€"
                   

        Set targetCell = targetCell.Offset(pt.TableRange1.Count + 2,0)
        targetCell.Select

    End If

End If

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)