我正在尝试在整个列上运行=subtotal()
函数并将值粘贴到同一列中,但是您无法在与尝试总计相同的列中运行该函数。
ActiveCell.Value = "Total No. of chargeable hours"
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = "=SUBTOTAL(9,G:G)"
由于这会返回错误,我尝试使用辅助单元格进行剪切和粘贴,但在PasteSpecial = xlPasteValues
行上出现调试错误。
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
每次创建相关工作表时,行数都会更改,因此无法使用特定的单元格范围。
有没有人有办法实现这个目标?
感谢。
答案 0 :(得分:2)
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
通常,您不需要选择或激活单元格。只需引用单元格并操纵属性或调用方法即可。上面的sub将标签放在活动单元格中,然后将单元格的Value属性更改为右边。
请注意,SUBTOTAL的第二个参数使用.Parent属性。在ActiveCell的With块内,.Parent属性将引用工作表。
答案 1 :(得分:0)
您需要编写一个返回数组的公式,以便将函数声明为
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不允许函数使用复制粘贴类型操作修改电子表格。