从一张纸收集信息,并将其放置在vba中的另一张纸上

我在同一个工作簿中有两个Excel表。 sheet1和sheet2。 在sheet1中,我生成每个月的date。 例如第z1列将是2017年3月1日,AA1将是2017年3月2日,AB1将在2017年3月3日等到一个月的结束date。

然后在sheet2中,我在N,O,P列有一些数字。 每天这些数字可能会有所不同。

SN存储在Sheet1和Sheet2的列C中。

现在我试图从sheet2(N + O + P)中的第N,O,P列收集值,并将它们存储在sheet1中head = Date的列中。 我正在尝试使用下面的代码,但这不起作用。

任何人都可以帮助我

Sub registrereren() Dim FirstDate As Date Dim LastDate As Date Dim NextDate As Date Dim r As Long Dim j As Long Dim lastrow1 As Long FirstDate = DateSerial(Year(Date), Month(Date), 1) LastDate = DateSerial(Year(Date), Month(Date) + 1, 0) lastrow1 = Sheets("Registration").Range("C" & Rows.Count).End(xlUp).Row For r = 27 To LastDate If Cells(1, r) = Date Then Next r For j = 2 To lastrow1 Sheets("Sheet1").Cells(j, r).Value = WorksheetFunction.VLookup(Sheets("Sheet1").Range("C" & j).Value * 1, Sheets("Sheet2").Range("C2 : P3000"), 11 + 12 + 13, 0) Next j End If End Sub 

Next r错误放置。 它应该在End If

生成的代码如下所示:

 Sub registrereren() Dim FirstDate As Date Dim LastDate As Date Dim NextDate As Date Dim r As Long Dim j As Long Dim lastrow1 As Long FirstDate = DateSerial(Year(Date), Month(Date), 1) LastDate = DateSerial(Year(Date), Month(Date) + 1, 0) lastrow1 = Sheets("Registration").Range("C" & Rows.Count).End(xlUp).Row For r = 27 To LastDate If Cells(1, r) = Date Then For j = 2 To lastrow1 Sheets("Sheet1").Cells(j, r).Value = WorksheetFunction.VLookup(Sheets("Sheet1").Range("C" & j).Value * 1, Sheets("Sheet2").Range("C2 : P3000"), 11 + 12 + 13, 0) Next j End If Next r End Sub 

VBA编辑器可以很容易地缩进代码。 每当你开始一个子,函数,循环,select大小写,或者如果语句,养成按下tab键缩进下一行的习惯。 当你完成块的时候,使用退格键让你回到之前的缩进级别。 此外,编辑器function区上还有一些选项可以让您缩进或缩进整个代码块。

一旦你习惯了这样做,当一个块没有以正确的方式终止时,它应该跳出来。 另一方面,你的零星的和不一致的缩进使得很难察觉Next r的问题。

上面的代码编译,但我不能以任何简单的方式进行testing,因为我不知道你的电子表格是如何布局的。 如果它仍然不起作用,那么代码还有另外一个问题,可以编辑你的问题,或者如果你需要的话,可以提出另一个问题(一旦你find问题所在)。