将总行添加到工作簿中的每个工作表

我一直在使用这个语法来将一个总行添加到一个工作表中

With ActiveSheet If Application.WorksheetFunction.CountA(.Cells) <> 0 Then LastRow = .Cells.Find(What:="*", _ After:=.Range("A1"), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row Else LastRow = 1 End If End With Range("C" & LastRow + 1).FormulaR1C1 = "=SUM(R[-" & LastRow & "]C:R[-1]C)" Range("C" & LastRow + 1 & ":L" & LastRow + 1).FillRight 

我想把它添加到工作簿中的所有工作表,我只需要像这样添加一个foreach循环

 Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets 'code above Next 

但是,这不适合帐单,因为我用With ActiveSheet它只是添加多个“总”行到选定的工作表。

如何将总行添加到我的工作簿中的每个工作表?

尝试这个。 我没有testing它。 你testing代码,让我知道如果有错误,我会然后工作 –

 Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets With ws If Application.WorksheetFunction.CountA(.Cells) <> 0 Then LastRow = .Cells.Find(What:="*", _ After:=.Range("A1"), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row Else LastRow = 1 End If End With ws.Range("C" & LastRow + 1).FormulaR1C1 = "=SUM(R[-" & LastRow & "]C:R[-1]C)" ws.Range("C" & LastRow + 1 & ":L" & LastRow + 1).FillRight Next 

你只需要确保你正在激活每个工作表:

 Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.activate 'code above Next 

应该这样做。