在我的vba循环中有使用单元格的问题

我试图做一个循环,从一个电子表格中获取多个范围的总和,并将该值粘贴到另一个电子表格中。 例如,当我使用范围(“E10:E54”),我的循环将工作,但它会粘贴相同的总和值在我所有的细胞。 我正在尝试使用Range(Cells())移动到下一个范围并获得我的总和,但是当我尝试这个时遇到一个错误。 我的代码如下。 我错过了什么?

这是我现在的代码。 我只取代范围(“单元格(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 

你会得到这个bug,因为范围内的Cells()正在查看活动工作表,而Range正在查看另一个工作表。 这是使用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块父。