簡體   English   中英

VBA從不同的工作簿返回范圍值的總和

[英]VBA return sum of range values from different workbook

我試圖在Excel工作表中使用VBA(將其稱為wbA)來查找另一個工作簿中的單元格區域中的值的總和(將其稱為wbB)。 我嘗試使用自定義的求和函數

Function sumrange(rng As Range)

summ = 0
For Each cell In rng
summ = summ + cell.Value
Next
sumrange = summ

End Function

我在這里在wbA中執行

Sub test4()
Dim app As New Excel.Application

Dim book As Excel.Workbook
Set book = app.Workbooks.Add("...\wbB.xlsm")

With book.Worksheets("November2013")

a = sumrange(Range("B5:T9"))

End With
MsgBox a
End Sub

這將返回wbA中設置范圍的總和,而不是wbB

我還嘗試了以下格式的worksheetfunction.sum選項

l = book.Worksheets("November2013").Application.WorksheetFunction.Sum(Range(B5:T9"))

With book.Worksheets("December2014")
p = Application.WorksheetFunction.Sum(Range(B5:T9"))
End With

但是計算並從wbA而不是wbB返回范圍的總和

我如何編寫代碼以查找wbB中范圍的總和,謝謝

對於仍在尋找一線解決方案的用戶:

Cells(10, 1) = WorksheetFunction.Sum(Worksheets("data").Range(Worksheets("data").Cells(3, 35), Worksheets("data").Cells(131, 35)))

只是從我的代碼中獲取了代碼,它按單元格解決了范圍問題,但是您可以輕松地使用RANGE("...")代替CELLS(,)函數)。

上面的示例行將工作表“ data”的總和(當前range("AI3:AI131") )寫入當前工作表的A10。

您的代碼通過我提到的更改對我有用。 這是我嘗試過的

當您指定范圍而不完全限定范圍時,它將始終引用活動工作表。 而且ActiveSheet可能不是您期望的工作表,因此完全限定了您的對象。

Sub test4()
    Dim book As Workbook
    Dim a

    Set book = Workbooks.Open("C:\Book1.xlsx")

    a = sumrange(book.Worksheets(1).Range("A1:A4"))

    MsgBox a
End Sub

Function sumrange(rng As Range)
    summ = 0
    For Each cell In rng
    summ = summ + cell.Value
    Next
    sumrange = summ
End Function

我注意到您正在使用

Set book = app.Workbooks.Add("...\wbB.xlsm")

像我一樣使用.Open

編輯

@SiddharthRout是的,我正在Excel中的VBA窗口中運行它– user3041384 3分鍾前

在這種情況下,您無需定義excel應用程序。 您的代碼可以重寫為

Sub test4()
    Dim book As Workbook, a

    Set book = Workbooks.Open("...\wbB.xlsm")

    With book.Worksheets("November2013")
        a = sumrange(.Range("B5:T9"))
    End With

    MsgBox a
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM