在不同的工作表vba中,直到最后一行为止

我正在使用两张工作表“开始工作表”“已发生的费用”列A4到拉斯特罗在开始工作表中date 。 我试图从“B7”中将date填入“已付费用”表中。 我正在使用一个偏移量,所以填写的第一个date将从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循环计数来增加范围,因此它将使用“开始页面”中的下一个填充已激活的单元格。

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

这应该做的伎俩

你需要偏移量的variables:

 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 

我希望你考虑不使用.Activate.Select方法,除非你真的必须(这是几乎从来没有)。 活动组件可能非常不可靠,在使用它们的大型项目中可能会损害代码性能。 正确的方法是使用variables来存储指向您的Worksheets指针,并增加了Workbookvariables以提高安全性。

 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