在我的vba循环中使用Cell作为我的范围时遇到问题

时间:2016-05-23 13:28:53

标签: excel vba excel-vba

我尝试制作一个循环,从一个电子表格中获取多个范围的总和,然后将该值粘贴到另一个电子表格中。例如,当我使用范围(" 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

1 个答案:

答案 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块父级。