将总行添加到工作簿中的每个工作表
我一直在使用这个语法来将一个总行添加到一个工作表中
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
应该这样做。