作者:jack2502937407 | 来源:互联网 | 2023-05-19 15:57
所以,有这个结构(从A1开始 - 显示片段>运行):
table {
border-color: #BBB;
border-width: 0px 0px 1px 1px;
border-style: dotted;
}
body {
font: 12px Arial, Tahoma, Helvetica, FreeSans, sans-serif;
color: #333;
}
td {
border-color: #BBB;
border-width: 1px 1px 0px 0px;
border-style: dotted;
padding: 3px;
}
|
A |
B |
C |
D |
1 |
Title 1 |
Title 2 |
Title 3 |
Title 4 |
2 |
GH |
1 |
434 |
4 |
3 |
TH |
3 |
435 |
5 |
4 |
TH |
4 |
4 |
6 |
5 |
LH |
2 |
0 |
3 |
6 |
EH |
2 |
5 |
36 |
我编写了一些代码来在ListObject中转换该范围(A1:D6),添加了4个新列和小计:
Function test()
Dim objLO As ListObject
Set objLO = ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$D$6"), , xlYes)
objLO.Name = "Recap"
objLO.TableStyle = "TableStyleMedium2"
objLO.ListColumns.Add (objLO.ListColumns.Count + 1)
objLO.HeaderRowRange(objLO.ListColumns.Count) = "Tot1"
objLO.ListColumns.Add (objLO.ListColumns.Count + 1)
objLO.HeaderRowRange(objLO.ListColumns.Count) = "Tot2"
objLO.ListColumns.Add (objLO.ListColumns.Count + 1)
objLO.HeaderRowRange(objLO.ListColumns.Count) = "Tot3"
objLO.ListColumns.Add (objLO.ListColumns.Count + 1)
objLO.HeaderRowRange(objLO.ListColumns.Count) = "Tot4"
objLO.ShowTotals = True
objLO.ListColumns("Tot1").TotalsCalculation = xlTotalsCalculationSum
objLO.ListColumns("Tot2").TotalsCalculation = xlTotalsCalculationSum
objLO.ListColumns("Tot3").TotalsCalculation = xlTotalsCalculationSum
objLO.ListColumns("Tot4").TotalsCalculation = xlTotalsCalculationSum
End Function
现在,如果你继续新列的任何单元格并写一些数字,奇怪的是TOTAL(小计)不会更新; 但是如果您保存文件并重新打开它,它将起作用,总计将更新.我错过了什么?
我已经尝试在TotalCalculation之后移动ShowTotals但行为保持不变.
如果我们现在从头开始重建工作表,并在应用前一代码中的样式后为列b,c和d添加这段代码:
objLO.ListColumns("b").TotalsCalculation = xlTotalsCalculationSum
objLO.ListColumns("c").TotalsCalculation = xlTotalsCalculationSum
objLO.ListColumns("d").TotalsCalculation = xlTotalsCalculationSum
我注意到b,c和d的小计正在工作但不适用于Tot1,Tot2等.
似乎唯一的解决方法是在添加带有用于创建它的引用的ListObject之前构造原始表.谁知道更好的解决方案?
提前致谢 :)