[英]Inputbox in [excel] [vba] to select range from a different workbook
[英]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.