【问题标题】:Having issues using Cells for my range in my vba loop在我的 vba 循环中使用 Cells 时遇到问题
【发布时间】:2016-05-23 13:28:53
【问题描述】:

我正在尝试创建一个循环,从一个电子表格中获取多个范围的总和并将值粘贴到另一个电子表格中。例如,当我使用 range("E10:E54") 时,我的循环将起作用,但随后它将在我的所有单元格中粘贴相同的总和值。我正在尝试使用 Range(Cells()) 移动到下一个范围并获得我的总和,但是当我尝试这样做时出现错误。我的代码如下。我错过了什么?

这是我当前的代码。我只换了 Range(Cells(10, 5), Cells(54, 5))) 而不是 Range("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

【问题讨论】:

    标签: vba excel


    【解决方案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块父级。

    【讨论】:

    • @sorenthomsen 如果这对您有用,请通过单击答案旁边的复选标记将其标记为正确。这是只有你才能做的事情。
    猜你喜欢
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2023-03-06
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多