Ir ao conteúdo
  • Cadastre-se

Visual Basic LOOP com células em intervalos


Ir à solução Resolvido por Midori,

Posts recomendados

Estou tentando criar uma macro para: todo dia, dar um clique e transformar a fórmula de busca no valor procurado

Todo dia eu tenho que dar crtl+C e colar somente valores nas células que foram puxadas por uma fórmula, pois a cada semana a tabela que faz essa busca, muda e eu perco os dados, retorna o valor "0".

Print abaixo da planilha que estou tentando fazer e na barra de fórmula, a formula que faz a busca que perde as referências diariamente

Nas linhas ocultas contem algumas outras fórmulas para cálculos internos que nao podem ser alterados, aí que vem minha dificuldade

 

image.thumb.png.07b469b7c8f440d96c94ca226098a2cf.png

 

Private Sub CommandButton1_Click()

lin = 4
lin2 = 5
lin3 = 6
col = 93

While Sheets("ZEN").Cells(2, col) < Now
Do Until ActiveCell <> ""
        Cells(lin, col).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Cells(lin2, col).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Cells(lin3, col).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
       
    lin = lin + 5
    lin2 = lin2 + 5
    lin3 = lin3 + 5
    
    Loop
    
col = col + 1

    Wend

End Sub

 

Link para o comentário
Compartilhar em outros sites

40 minutos atrás, Midori disse:

@Aron Gerd Ristow Filho  Se possível anexe a planilha ou um modelo semelhante ao formato da original. Assim fica mais fácil tentar ajudar.

 

Segue link da planilha salva no DRIVE:

https://drive.google.com/file/d/1r77tbhjP1cmzI5W1NdXSNQj8U7guL_mZ/view?usp=sharing

 

Edit: o código esta na UserForm no click do botão transpor.

Link para o comentário
Compartilhar em outros sites

  • Solução

@Aron Gerd Ristow Filho  Veja se é assim,

 

A macro vai copiar e colar valor em CO4:DB56. O range começa na coluna CO que é da forma que você fez na sua macro (coluna 93) e vai até a coluna DB que é a última com a data menor que hoje.

 

Sub ColarValores()
    Dim Coluna  As Integer
    Dim Linha   As Long
    Dim Area    As Range
    
    With ThisWorkbook.Sheets("ZEN")
        Linha = .Range("B" & .[B:B].Count).End(xlUp).Row
        Coluna = .[CO1].Column
        
        While .Cells(2, Coluna) < Now
            Coluna = Coluna + 1
        Wend
        
        Set Area = .Range(.Cells(4, .[CO1].Column), .Cells(Linha, Coluna))
            Area.Copy
            Area.PasteSpecial xlPasteValues
            Application.CutCopyMode = False
    End With
End Sub

 

Link para o comentário
Compartilhar em outros sites

15 horas atrás, Midori disse:

@Aron Gerd Ristow Filho  Veja se é assim,

 

A macro vai copiar e colar valor em CO4:DB56. O range começa na coluna CO que é da forma que você fez na sua macro (coluna 93) e vai até a coluna DB que é a última com a data menor que hoje.

 



Sub ColarValores()
    Dim Coluna  As Integer
    Dim Linha   As Long
    Dim Area    As Range
    
    With ThisWorkbook.Sheets("ZEN")
        Linha = .Range("B" & .[B:B].Count).End(xlUp).Row
        Coluna = .[CO1].Column
        
        While .Cells(2, Coluna) < Now
            Coluna = Coluna + 1
        Wend
        
        Set Area = .Range(.Cells(4, .[CO1].Column), .Cells(Linha, Coluna))
            Area.Copy
            Area.PasteSpecial xlPasteValues
            Application.CutCopyMode = False
    End With
End Sub

 

 

 

Bom dia Midori,

 

Cara, é quase isso, só que eu nao posso selecionar todas as linhas, como voce pode ver (vide anexo), tem algumas linhas ocultas entre a linha da NF e a linha abaixo de Qtd Planejada, as mesmas tem fórmulas e links que pego como referencia na aba acompanhamento, e seria bom nao perder as fórmulas em si.

 

Foi por isso que eu tinha usado, ou tentado usar o comando das "linhas +5", para assim criar um loop até que o codigo achasse a linha vazia para pular para a proxima coluna.

 

Mas com esse seu código, eu já consigo criar uma rotina para somente copiar e colar as segundas feiras, com o " < Now - 1" ai eu colo os valores da semana anterior, e atualizo a planilha para a semana que se inicia.

 

Vou marcar como respondida porque eu já consigo me virar, mas se voce quiser dar essa última força fica aqui meus agradecimentos. 

 

 image.png.08663ec301191ff08cb0484beccdd9da.png

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...