问题描述
我现在正在开发一个 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 (将#修改为@)