对每个工作表应用小计,但活动工作表除外

时间:2016-10-26 20:24:33

标签: excel vba excel-vba

我需要根据以下标准对excel中的每个工作表应用小计,除了当前工作表或活动工作表: 分类汇总 在每次变化中 第9栏 和 第17栏和第18栏

我使用了以下代码,但它给了我一些奇怪的错误。

Private Sub CommandButton2_Click()

Dim ws1 As Worksheet

For Each ws1 In Sheets
    If Not ws1 Is ActiveSheet Then
        Range("A1:V5").Select
        Selection.Subtotal GroupBy:=9, Function:=xlSum, TotalList:=Array(17, 18), _
            Replace:=True, PageBreaks:=False, SummaryBelowData:=True
    End If
Next ws1

End Sub

1 个答案:

答案 0 :(得分:0)

您当前的代码在活动工作表上执行小计,因为您从不告诉它使用ws1作为执行任务的工作表。

尝试以下方法:

Private Sub CommandButton2_Click()

    Dim ws1 As Worksheet

    For Each ws1 In Worksheets
        If Not ws1 Is ActiveSheet Then
            ws1.Range("A1:V5").Subtotal GroupBy:=9, Function:=xlSum, TotalList:=Array(17, 18), _
                Replace:=True, PageBreaks:=False, SummaryBelowData:=True
        End If
    Next ws1

End Sub

修改:要将多个工作表排除在小计之外,请使用类似的内容:

Private Sub CommandButton2_Click()

    Dim ws1 As Worksheet

    For Each ws1 In Worksheets
        If ws1.Name <> "Control" And ws1.Name <> "AnotherSheet" Then
            ws1.Range("A1:V5").Subtotal GroupBy:=9, Function:=xlSum, TotalList:=Array(17, 18), _
                Replace:=True, PageBreaks:=False, SummaryBelowData:=True
        End If
    Next ws1

End Sub