在VBA中使用SubTotal,但出现流错误

时间:2019-04-25 09:44:32

标签: excel vba

试图使VBA合并范围C5:C46,D5:D46等,但仅显示要添加的可见行。

尝试了多种方法,并查看了许多其他代码来尝试使其正常运行,但没有成功

我在征求建议!

附上了我使用过的两个示例,但是没有用。

Private Function AddTotals()

'    Dim rCell As Range
'    For Each rCell In Range("C5:C46")
'        Cells(47, 3).Value = WorksheetFunction.Subtotal(109, Range(Cells(1, rCell.Column), _
'            Cells(Rows.Count, rCell.Column).End(xlUp)))
'    Next rCell
    Cells(47, 3).Value = WorksheetFunction.Subtotal(109, Range("C5:C46")) ' Add up all Invoiced Amount
    Cells(47, 4).Value = WorksheetFunction.Sum(Range("D5:D46")) ' Add up all Activities Amount
    Cells(47, 6).Value = WorksheetFunction.Sum(Range("F5:F46")) ' Add up all Cash Payments
    Cells(47, 7).Value = WorksheetFunction.Sum(Range("G5:G46")) ' Add up all EFT Payments
End Function

使用“总和”有效,但不能使用小计。

2 个答案:

答案 0 :(得分:0)

I suggest you use explicit references to the worksheet to which your cells/ranges belong. I am running the following code with no issues whatsoever:

Sub AddTotals()

Dim sht As Worksheet
Set sht = ThisWorkbook.Worksheets("The name of your worksheet")
sht.Cells(31, 3).Value = WorksheetFunction.Subtotal(109, sht.Range("C5:C30"))
sht.Cells(31, 4).Value = WorksheetFunction.Sum(sht.Range("D5:D30"))
sht.Cells(31, 6).Value = WorksheetFunction.Sum(sht.Range("F5:F30"))
sht.Cells(31, 7).Value = WorksheetFunction.Sum(sht.Range("G5:G30"))

End Sub

Here's my results on some random data:

enter image description here

中提取Facebook页面URL

答案 1 :(得分:0)

我认为您可以使用:

Option Explicit

Sub test()

    With ThisWorkbook.Worksheets("Sheet1") 'Change if needed

        .Cells(31, 3).Formula = "=Subtotal(109,C5:C30)"
        .Range(.Cells(31, 4), .Cells(31, 7)).Formula = "=Sum(D5:D30)"

    End With

End Sub