为什么我的下一个循环无法正常工作?

我是新来的这个网站以及VBA。 我一直在做一个项目,碰到一堵墙。 我希望有人能帮助我。 我想要做的是创build一个循环,将通过指定的工作表,并拉出符合我的标准的数据,复制并粘贴到另一个工作表,我将计算它,然后显示在另一个计算结果片。

所以,我有下面的代码(excel VBA),假设要通过表单并拉出与本周相匹配的所有logging(我也尝试添加当前年份,到目前为止没有运气),并粘贴所有匹配的logging到名为Archieve的表单上:

Sub DataByWeek() Dim cw As Integer ' current week Dim cy As Integer ' current year Dim lr As Long 'last row of data Dim i As Long ' row counter 'Get week number of today's date cw = Format(Date, "ww") cy = Format(Date, "yyyy") ActiveWorkbook.Worksheets("Daily DB").Activate ' Find last row of data plus one down lr = Sheet7.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row For i = 2 To lr If Cells(i, 6) = cw Then Range(Cells(i, 1), Cells(i, 5)).Copy ActiveWorkbook.Worksheets("Archieve").Activate Range("A2").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats End If Next i End Sub 

这段代码做了我希望它做的一切,除了返回超出第一个匹配的迭代。 代码会遍历名为Daily DB的表单上的所有数据,但只返回第一个匹配的logging。 我已经尝试在网上查找(包括这个网站在内的许多网站),看看我是错过了什么或者做错了什么,但是我找不到错误的地方。

我也想知道如何在If语句条件中添加第二个条件。 我想添加一年,使条件读取类似

 If Cells(i, 6 & 7) = cw & cy Then ... 

在哪里,6包含星期和我,7包含年。 换句话说,我想“说”查找包含x年x周的所有logging。

对不起,如果这太长,并感谢您在任何和所有的帮助先进。

如果你添加ActiveWorkbook.Worksheets("Daily DB").ActivateEnd If语句之前ActiveWorkbook.Worksheets("Daily DB").Activate ,我相信它会解决你的问题。 我不确定这是最有效的方法。