VBA给我的结果都在第一张纸上,而不是相关的表?

我很接近完成我所要做的事情。 我基本上只需要在列的末尾直接在工作簿的所有表格中添加所有列的总和。 我的问题是答案全部出现在第一张纸上而不是相关的纸上。 我无法弄清楚我需要改变什么

这是我正在与之合作

Private Sub Workbook_Open() Dim ws As Worksheet Dim Lastrow As Long, Lastcol As Long For Each ws In ThisWorkbook.Worksheets Lastrow = ws.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1 Lastcol = ws.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column Range(Cells(Lastrow, "D"), Cells(Lastrow, Lastcol)).FormulaR1C1 = "=SUM(R1C:R" & Lastrow - 1 & "C)" Next ws End Sub 

尝试这个:

 Private Sub Workbook_Open() Dim ws As Worksheet Dim Lastrow As Long, Lastcol As Long For Each ws In ThisWorkbook.Worksheets Lastrow = ws.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1 Lastcol = ws.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column ws.Activate Range(Cells(Lastrow, "D"), Cells(Lastrow, Lastcol)).FormulaR1C1 = "=SUM(R1C:R" & Lastrow - 1 & "C)" Next ws End Sub 

或(完成@John Coleman的回答)

 Sub test() Dim ws As Worksheet Dim Lastrow As Long, Lastcol As Long For Each ws In ThisWorkbook.Sheets Lastrow = ws.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1 Lastcol = ws.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column ws.Range(ws.Cells(Lastrow, "A"), ws.Cells(Lastrow, Lastcol)).FormulaR1C1 = "=SUM(R1C:R" & Lastrow - 1 & "C)" Next ws End Sub 

replaceRange(Cells(Lastrow, "D"), ... by

 ws.Range(ws.Cells(Lastrow, "D"), ... 

由于您没有指定工作表, Range被解释在活动工作表中。