Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
偏移到其他工作表vba中的最后一行_Vba_Loops_Excel - Fatal编程技术网

偏移到其他工作表vba中的最后一行

偏移到其他工作表vba中的最后一行,vba,loops,excel,Vba,Loops,Excel,我正在处理两张工作表,分别是“起始工作表”和“预计费用”第A4列至最后一行,起始工作表中有日期。我正试图将日期填入“B7”中的实际费用表中。我使用的是一个偏移量,因此填充的第一个日期将从A5(起始页)开始。这是我的密码: Sub offset_Dates() Dim RCount As Integer Dim n As Integer Sheets("start page").Activate RCount = Range(Range("A5000").End(xl

我正在处理两张工作表,分别是“起始工作表”和“预计费用”第A4列至最后一行,起始工作表中有日期。我正试图将日期填入“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

您需要使用for循环计数增加范围,这样它将使用起始页上的下一个值填充Acurred单元格

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

这应该可以做到这一点

您需要偏移量中的变量:

Range("B7").Offset(n - 1, 0) = Sheets("start page").Range("A4").Offset(n, 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

<>我想让你考虑不要使用<代码>。激活< <代码> >代码>。选择< <代码> >方法,除非你真的必须(几乎从来没有)。活动组件可能非常不可靠,在大型项目中使用它们可能会影响代码性能。正确的方法是使用变量来存储指向
工作表的指针
,并添加
工作簿
变量以提高安全性

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