Notifications
Clear all

Dar Next ao código

22 Posts
3 Usuários
0 Reactions
3,245 Visualizações
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Pessoal,

como posso dar continuidade a essa macro para que ela continue executando até parar numa célula vazia?

Sheets("Plan1").Select

Range("A2").Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
Rows("2:2").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp

Range("C1").Select
Selection.Copy
Sheets("dados").Select
Range("A2").Select
ActiveSheet.Paste

Range("A4").Select
Range("A4:I5000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A1:I2"), Unique:=False

Columns("L:L").Select
Selection.ClearContents

Range("A4").Select
Sheets("Plan1").Select
Range("D3").Select

 
Postado : 19/08/2014 1:53 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Não entendi o que vc quer.

Primeiro vc copia de A2 para C1, exclui a linha 2, depois devolve de C1 para A2.

Depois disso, vc filtra dados, mas apaga a coluna inteira (ou seja, não adiantou nada ter filtrado antes, rs)

Por acaso vc está tentando organizar dados de um relatório? Se for isso, seria melhor enviar um modelo de como é o relatório (mesmo que com dados falsos), e um modelo de como vc quer que eles fiquem.

Abs

 
Postado : 19/08/2014 2:06 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

gtsalikis
é exatamente isso... quero que todo esse processo seja realizado, porque antes dele já existe outro processo meu...

só que não sei dar o next ao código da macro... pra que ela continue rodando executando o processo e parar numa célula vazia.

 
Postado : 19/08/2014 2:17 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

bem, pelo que eu pode "decifrar, seria isso:

Dim i As Long

Sheets("Plan1").Select

i = 2
Do Until IsEmpty(i, "A")

    Range("A" & i).Select
    Selection.Copy
    Range("C" & i - 1).Select
    ActiveSheet.Paste
    Rows(i & ":" & i).Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp

    Range("C" & i - 1).Select
    Selection.Copy
    Sheets("dados").Select
    Range("A" & i).Select
    ActiveSheet.Paste

    Range("A" & i + 2).Select
    Range("A" & i + 2 & ":I5000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A1:I2"), Unique:=False

    Columns("L:L").Select
    Selection.ClearContents

    i = i + 2

Loop

Porém, como eu te disse, se vc postasse um exemplo dos dados com o antes e o depois, iria facilitar muito, e o código ficaria melhor e mais rápido.

Abs

 
Postado : 19/08/2014 2:49 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

gtsalikis

Consegui compreender o código, mas ainda não consegui fazer rodar...

postei o exemplo para ver se consegue me ajudar.

coloquei a explicação na Plan1 para melhor entender.

 
Postado : 20/08/2014 9:19 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Eu não entendi.

Primeiro Passo

Identificar as células que estão em amarelo e excluir.

Sub Filtrar_Cor()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    ActiveSheet.Range("$A$1:$A$" & lastRow).AutoFilter Field:=1, Criteria1:=RGB(255, _
        255, 0), Operator:=xlFilterCellColor
        ActiveSheet.Range("$A$1:$A$" & lastRow).Offset(1, 0).SpecialCells _
        (xlCellTypeVisible).EntireRow.Delete
End Sub

Segundo Passo

Escolher cada célula que não está preenchida a partir da A2, filtrar na Plan "dados" e deletar todas a informações que estão na coluna "L"

:? :? Baseado em qual critério filtrar na guia ""dados?
Att

 
Postado : 20/08/2014 10:11 am
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

talvez não seja necessário filtrar.. se conseguir apenas identificar as informações que estão sem preenchimento da Plan1 na Plan "dados" e excluir os valores da coluna L, estará de bom tamanho...

 
Postado : 20/08/2014 10:29 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!!

talvez não seja necessário filtrar.. se conseguir apenas identificar as informações que estão sem preenchimento da Plan1 na Plan "dados" e excluir os valores da coluna L, estará de bom tamanho..

mas baseado em que as linhas serão deletada? :? :?

Att

 
Postado : 20/08/2014 2:21 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Como seria o Processo...

Na Aba Plan1 Eu tenho informações que atualizo diariamente.
Plan1
A1
5033
5034
5035

PlanDados ------------ Coluna L
5033 ---- ---------------- 20,00

Só preciso que a macro identifique a informação da Plan1 "5033" (exemplo) e vá até a coluna "L" da Plan Dados e exclua os valores da contidos na coluna "20,00" (exemplo)

Feito isso... ele continua com o processo... 5034... 5035

 
Postado : 20/08/2014 3:46 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Veja se ajuda
https://www.sendspace.com/file/aeedmi

Obs: Os códigos em amarelos já foram retirados!!

Att

 
Postado : 21/08/2014 7:21 am
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Alexandre, está dando esse erro.

 
Postado : 21/08/2014 9:56 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

No seu arquivo modelo eu não tive erro!!!

Att

 
Postado : 21/08/2014 10:03 am
(@gtsalikis)
Posts: 2373
Noble Member
 

tenta colocar um ponto nessa linha ai, ficando assim:

.Range("A5", .Range...

 
Postado : 21/08/2014 10:13 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

gtsalikis , não é necessário!!!

Att

 
Postado : 21/08/2014 10:37 am
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

gtsalikis / Alexandre,

coloquei o ponto e não deu erro, mas a macro não fez nada...

 
Postado : 21/08/2014 11:27 am
Página 1 / 2