在不同的工作表vba中偏移到最后一行

时间:2015-04-24 06:00:45

标签: excel vba loops excel-vba

我正在使用两个工作表“开始工作表”“已支付的费用” A4列到lastrow的日期在开始工作表中。我试图将日期填入Acurred支出表,来自“B7”。我正在使用偏移,因此填充的第一个日期将来自A5(起始页)。这是我的代码:

Sub offset_Dates()

    Dim RCount As Integer   Dim n As Integer
    Sheets("start page").Activate
    RCount = Range(Range("A5000").End(xlUp), Range("A4")).Rows.Count

        For n = 1 To RCount
            Sheets("Acurred Expenses").Activate
            Range("B7") = Sheets("start page").Range("A4").Offset(1, 0)

        Next n 
End Sub

4 个答案:

答案 0 :(得分:1)

您需要使用for循环计数增加范围,因此它将使用Start Page上的下一个填充Acurred单元格。

    For n = 1 To RCount
        Sheets("Acurred Expenses").Activate
        Range("B" & 6 + n) = Sheets("Start Page").Range("A" & 4 + n)
    Next n

这应该可以解决问题

答案 1 :(得分:1)

你需要偏移变量:

Range("B7").Offset(n - 1, 0) = Sheets("start page").Range("A4").Offset(n, 0)

答案 2 :(得分:0)

也是我方的另一个变种

Sub offset_Dates()
    Dim RCount%, cl As Range
    RCount = Sheets("start page").Cells(Rows.Count, "A").End(xlUp).Row
    For Each cl In Sheets("start page").Range("A4:A" & RCount)
        Sheets("Acurred Expenses").Cells(cl.Row + 3, "B").Value = CDate(cl.Value)
    Next cl
End Sub

答案 3 :(得分:0)

我希望您考虑不使用.Activate.Select方法,除非您真的必须(几乎从不)。活动组件可能非常不可靠,在使用它们的大型项目中可能会损害代码性能。正确的方法是使用变量来存储指向Worksheets的指针,添加Workbook变量以确保额外的安全。

Sub offset_Dates()

    Dim RCount As Integer
    Dim n As Integer
    Dim wb As Workbook
    Dim wsStart As Worksheet
    Dim wsExpenses As Worksheet

    Set wb = ActiveWorkbook
    Set wsStart = wb.Worksheets("start page")
    Set wsExpenses = wb.Worksheets("Acurred Expenses")

    RCount = Range(wsStart.Range("A5000").End(xlUp), wsStart.Range("A4")).Rows.Count

    For n = 1 To RCount
        wsExpenses.Range("B7").Offset(n - 1, 0) = wsStart.Range("A4").Offset(n, 0)
    Next n

End Sub