如何在单元格为空之前循环遍历范围在Excel VBA中

时间:2018-04-05 13:42:46

标签: excel vba excel-vba

我一直在努力拼凑一个解决Excel和VBA问题的解决方案,我一直在努力工作。完全披露:我不是真正的开发人员,我真的很挣扎 - 即使它非常简单(!)我的问题的一个例子如下:

Example Table

在上表中,我将从另一个工作簿中占据A列到C列的值粘贴到此工作簿的底部。我还在D和E列中有公式,它处理A到C列中的信息。

通常我会复制D列和E列第2行中的公式,然后将其粘贴到D列以处理粘贴到A到C的新值。然后,我刷新工作簿,因为我有Pivot表汇总列中的数据D和E.最后,我会将更改保存到工作簿。

我一直在尝试自动完成这个过程,并拼凑了一些事情来完成上述操作,但是当我运行我的项目时,我产生了'运行时错误:1004:应用程序定义的或对象定义的错误'。

以下任何帮助都将是一个巨大的帮助,非常感谢。

谢谢

mat

2 个答案:

答案 0 :(得分:1)

我想知道是否有类似以下的内容,但您是否正在更换工作表并仍希望使用之前的ActiveCell?

Sub Paste_formula()

    Dim r As Range
    Dim CurrRow As Long
    Dim LastRow As Long

    With Sheets("Data")

        CurrRow = ActiveCell.Row
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        For Each r In .Range("A" & CurrRow & ":A" & LastRow)

            If r.Value <> vbNullString Then r.Offset(0, 4) = r

        Next r

    End With

End Sub

答案 1 :(得分:0)

更改:

For Each r In .Range(CurrRow, LastRow)

为:

For Each r In .Range(.Cells(LastRow, "A").Cells(CurrRow, "D"))

根据您在代码的评论和当前代码中所写的内容。