VBA小计栏和打印在同一列

我试图在整个列上运行a =subtotal()函数,并将该值粘贴在同一列中,但是不能在同一列中运行该函数以尝试总计。

 ActiveCell.Value = "Total No. of chargeable hours" ActiveCell.Offset(0, 2).Select ActiveCell.Value = "=SUBTOTAL(9,G:G)" 

由于这将返回一个错误,我曾尝试使用辅助单元来剪切和粘贴,但在PasteSpecial = xlPasteValues行上得到debugging错误。

 ActiveCell.Value = "Total No. of chargeable hours" ActiveCell.Offset(0, 1).Select ActiveCell.Value = "=SUBTOTAL(9,G:G)" ActiveCell.Cut ActiveCell.Offset(0, 1).Select ActiveCell.PasteSpecial = xlPasteValues 

每当有问题的表格被创build时,行数都会改变,所以不能使用特定的单元格范围。

有没有人有一个工作方式来实现这一目标?

谢谢。

 Sub WriteSubtotal() With ActiveCell .Value = "Total No. of chargeable hours." .Offset(0, 1).Value = Application.WorksheetFunction.Subtotal(9, .Parent.Range("G1").EntireColumn) End With End Sub 

通常,您不需要select或激活单元格。 只要引用单元格并操作属性或调用方法即可。 上面的sub在活动单元格中添加一个标签,然后将单元格的Value属性更改为右侧。

请注意SUBTOTAL的第二个参数使用.Parent属性。 在ActiveCell的With块中,.Parent属性将引用表单。

你需要编写一个返回数组的公式,所以你可以声明你的函数为

 Function SubTotal(InputRange as Range) as Variant Dim Output() as Variant ' ReDim Output(.... to the correct rows, column size) ' Run your subtotal code here ' Output (Row, 1) = YourAnswer(Row) SubTotal = Output End Function 

VBA将不允许使用复制粘贴types操作来修改电子表格。