我尝试制作一个循环,从一个电子表格中获取多个范围的总和,然后将该值粘贴到另一个电子表格中。例如,当我使用范围(" E10:E54")时,我的循环将起作用,但它将在我的所有单元格中粘贴相同的总和值。我正在尝试使用Range(Cells())移动到下一个范围并得到我的总和,但是当我尝试时我得到了一个bug。我的代码如下。我错过了什么?
这是我目前的代码。我只替换了 范围(单元格(10,5),单元格(54,5)))而不是范围(" e10:E54"),我得到一个错误。
Dim e As Long
e = 1
Do While e < 39
Cells(e, 5).Value = Application.Sum(Workbooks("Current Fcst.xlsm").Sheets("Sales").Range(Cells(10, 5), Cells(54, 5)))
e = e + 3
Loop
End Sub
答案 0 :(得分:1)
您会收到错误,因为范围内的Cells()
正在查看活动工作表,而范围正在查看不同的工作表。这是使用With Block的好时机。
Dim e As Long
Dim ws as WorkSheet
Set ws = ActiveSheet
e = 1
Do While e < 39
With Workbooks("Current Fcst.xlsm").Sheets("Sales")
ws.Cells(e, 5).Value = Application.Sum(.Range(.Cells(10, 5), .Cells(54, 5)))
End With
e = e + 3
Loop
通过直接设置包含活动工作表的父工作表,excel知道每个范围对象属于哪个工作表。
三个对象前面的.
告诉excel它属于With块父级。