/ / Por que meu loop for next não está funcionando corretamente? - excel, vba, excel-vba

Por que o meu próximo loop não está funcionando corretamente? - excel, vba, excel-vba

Sou novo neste site e também no VBA. Estou trabalhando em um projeto e esbarrei em uma parede. Espero que alguém possa me ajudar. O que estou tentando fazer é criar um loop que irá percorrer a planilha especificada e obter dados que correspondem aos meus critérios, copiar e colo em outra planilha, onde estarei calculando e depois mostrando os resultados dos cálculos em outra planilha.

então, eu tenho o seguinte código (excel VBA) que ésuponha que você percorra a planilha e extraia todos os registros que correspondem à semana atual (também estou tentando adicionar o ano atual, sem sorte até agora) e cole todos os registros correspondentes na planilha chamada 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

Este código faz tudo que eu quero, excetoretornar além da primeira iteração correspondente. O código passa por todos os dados na planilha chamada Daily DB, mas retorna apenas o primeiro registro correspondente. Eu tentei olhar online (muitos sites incluindo este) para ver se perdi algo ou fiz algo errado, mas não consigo encontrar onde eu errei.

Também gostaria de saber como posso adicionar um segundo critério à condição da instrução If. Eu gostaria de adicionar o ano para que a condição seja algo como

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

Onde i, 6 contém o número da semana e i, 7 contém o ano. Em outras palavras, gostaria de "dizer" que encontre todos os registros que contenham x semana de x ano.

Desculpe se demorou muito e agradeço antecipadamente por toda e qualquer ajuda.

Respostas:

0 para resposta № 1

Se você adicionar ActiveWorkbook.Worksheets("Daily DB").Activate antes de o End If declaração, acredito que resolveria o seu problema. Não tenho certeza se é a maneira mais eficiente.