宏以求和来自具有多个工作表的另一个工作簿的值

时间:2018-07-17 10:58:43

标签: excel vba excel-vba worksheet

我正在做一个项目,要求我在另一个Excel工作簿中求和多个值。

另一本工作簿包含120页。我想从每个工作表中获取一定的值,并将其与其余的值相加。所有120个值的单元格引用都是固定的,例如J3。

值得一提(也许)的另一件事是工作表代码名称没有组织(即工作表1一直到工作表120),在它们之间添加/删除了几张工作表。

现在我得到

  

运行时错误424需要对象

Sub SumProject1P()
    Dim Project1P As Workbook
    Dim reserves
    Dim WS_Count As Integer
    Dim i As Integer
    Dim V As Variant

    Set Project1P = Workbooks.Open("FILE PATH")
    WS_Count = Workbook.Worksheets.Count
    V = Workbook.Worksheets
    reserves = sumrange(Workbook.Worksheets(V).range(Cells(1, 8)))
End Sub


Function sumrange(range)
    summ = 0
    For i = 1 To WS_Count
        summ = summ + reserves
    Next
    reserves = summ
End Function

我希望收到反馈和输入。

2 个答案:

答案 0 :(得分:1)

你在这里

Sub SumProject1P()

Dim Project1P As Workbook
Dim reserves As Long
Dim WS_Count As Integer
Dim filePath As String

    filePath = "Enter you file path"

    Set Project1P = Workbooks.Open(filePath, ReadOnly:=True)
    WS_Count = Project1P.Worksheets.Count


   For i = 1 To WS_Count
    If Sheets(i).range("J3") <> "" And IsNumeric(Sheets(i).range("J3")) Then
        reserves = reserves + Sheets(i).range("J3")
    End If
   Next

   MsgBox "Total of all sheets :" & reserves
End Sub

答案 1 :(得分:0)

由于没有对任何对象使用object required函数,因此出现Worsheets.count错误。

您的代码:

Set Project1P = Workbooks.Open("FILE PATH")
    WS_Count = Workbook.Worksheets.Count

您需要将此功能用于Project1P对象。

 Set Project1P = Workbooks.Open("FILE PATH")
    WS_Count = Project1P .Worksheets.Count 

Santosh已经为您提供了最简单的方法。不过,如果您想使用Function进行操作,请尝试以下操作。

Sub Sum()

Dim Project1P As Workbook
    Dim WS_Count As Integer
    Dim i As Integer
    Dim V As Variant
    Set Project1P = Workbooks.Open("File path")
    WS_Count = Project1P.Worksheets.Count
    sumrange (WS_Count)

End Sub

Function sumrange(TotalSheets As Integer)

     Dim reserves As Integer

     For i = 1 To TotalSheets
         If Sheets(i).range("J3") <> "" And IsNumeric(Sheets(i).range("J3")) Then
             reserves = reserves + Sheets(i).range("J3")
        End If
     Next

    MsgBox "Total of all sheets :" & reserves

End Function
相关问题