Ir ao conteúdo
  • Cadastre-se

Loop em células do excel com vba - sem macro


Posts recomendados

Já fiz o delta com formula mesmo

 

 

Olá, Glauco.

É exatamente essa fórmula que foi introduzida que provoca o problema. Se quiser faça o teste com o código anterior sem as fórmulas que calculam o 'Delta'. Sem ver o arquivo ficaria difícil descobrir o erro, por isso a minha insistência em ver o arquivo.

 

Experimente o código abaixo no lugar do anterior. Nele acrescentei comandos para contornar o recálculo provocado pela fórmula do 'Delta'. Aproveitei e exclui o comando que exibia a caixa de mensagem para informar nos casos em que as 3 previsões estavam preenchidas.

Private Sub Worksheet_Calculate() Dim c As Range, LR As Long, k As Long  LR = Cells(Rows.Count, 5).End(xlUp).Row   On Error GoTo gout   Application.EnableEvents = False   For Each c In Range("E6:E" & LR)    If c.Value > 0 And c.Value <> c.Offset(, 22).Value Then     k = Application.CountA(Range(Cells(c.Row, 7), Cells(c.Row, 9))) + 7      If k < 10 Then Cells(c.Row, k) = c.Offset(, 22).Value      c.Offset(, 22).Value = c.Value    End If   Next cgout:Application.EnableEvents = TrueEnd Sub
Link para o comentário
Compartilhar em outros sites

olá @osvalmp

 

Muito bom! funcionou perfeito, parabéns!!! pergunta que lhe faço, é possível depois do preenchimento dos clones em G, H e I, o valores ficarem bloqueados não permitindo alteração? Entendo que teria que colocar uma senha no intervalo, porém acho que se colocar uma senha o loop não consegue percorrer as células correto? por que estariam bloqueadas ficando travado o processo. é possível ?

 

Se fosse possível seria perfeito, só eu como adm da planilha pudesse limpar os valores dessas colunas. 

 

Obrigado, 

Link para o comentário
Compartilhar em outros sites

Acrescente a segunda linha abaixo no código.

Proteja a planilha com senha e coloque a senha na segunda linha abaixo, e ao proteger mantenha as células das colunas 'G:I' bloqueadas.

Para impedir que outros usuários vejam a senha de proteção da planilha proteja o Projeto VBA.

...  LR = Cells(Rows.Count, 5).End(xlUp).Row   ActiveSheet.Protect "SuaSenhaAqui", UserInterFaceOnly:=True...
Link para o comentário
Compartilhar em outros sites

olá @osvaldomp

Bom dia,

 

 

Será que abaixo de cada linha do código você poderia colocar a explicação do código? para se caso no futuro por exemplo que incluir colunas eu entenda onde devo aumentar ou diminuir.

 

Private Sub Worksheet_Calculate()
 Dim c As Range, LR As Long, k As Long
  LR = Cells(Rows.Count, 5).End(xlUp).Row

ActiveSheet.Protect "SuaSenhaAqui", UserInterFaceOnly:=True
   On Error GoTo gout
  
Application.EnableEvents = False
   For Each c In Range("E6:E" & LR)
    If c.Value > 0 And c.Value <> c.Offset(, 22).Value Then
     k = Application.CountA(Range(Cells(c.Row, 7), Cells(c.Row, 9))) + 7
      If k < 10 Then Cells(c.Row, k) = c.Offset(, 22).Value
      c.Offset(, 22).Value = c.Value
    End If
   Next c
gout
:
Application.EnableEvents = True
End Sub

 

agradeço 

Link para o comentário
Compartilhar em outros sites

Será que abaixo de cada linha do código você poderia colocar a explicação do código? para se caso no futuro por exemplo que incluir colunas eu entenda onde devo aumentar ou diminuir.

 

 

é Possível?

 

 

Me parece que o futuro já chegou ... :P

 

Disponibilize uma amostra do seu arquivo do futuro. :rolleyes:

Link para o comentário
Compartilhar em outros sites

Olá @osvaldomp

 

 

Na verdade ainda não, mas pode ser que daqui um tempo precise apenas acrescentar colunas, como ficaria a macro se eu acrescentasse colunas para continuar clonando os dados de "E" depois da "I" ou seja a planilha ficaria clonando em G,H,I, J, L e M. e todo o resto da planilha continuaria existindo.

 

Outra pergunta, quando coloco a linha para proteger as colunas que me passou 

 

ActiveSheet.Protect "SuaSenhaAqui", UserInterFaceOnly:=True

 

Ela também trava outras planilhas que estejam abertas, tem como ser diferente? e travar apenas a planilha que a macro se encontra

 

Obrigado

Link para o comentário
Compartilhar em outros sites

... mas pode ser que daqui um tempo precise apenas acrescentar colunas ...

sugestão - quando você tiver a planilha com a nova estrutura abra um tópico aqui no fórum, disponibilize uma amostra e coloque o código que você estiver utilizando. Aí alguém vai lhe ajudar.

 

Outra pergunta, quando coloco a linha para proteger as colunas que me passou 

ActiveSheet.Protect "SuaSenhaAqui", UserInterFaceOnly:=True

Ela também trava outras planilhas que estejam abertas, tem como ser diferente? e travar apenas a planilha que a macro se encontra

Você quis dizer "protege outras planilhas" ?

Experimente substituir naquela linha ActiveSheet por Sheets("Clientes") >> confirme se esse é o nome correto da planilha

Link para o comentário
Compartilhar em outros sites

ola @osvaldomp 

 

Sei que já deve estar de saco cheio das minhas solicitações de ajuda. 

 

Mas por favor me ajuda só mais nessa!o arquivo continua o mesmo do link abaixo eu só acrescentaria depois da coluna "I" mais três colunas para Ficar 6 colunas de previsão clonando os valores. da coluna "E" seguindo a mesma sequencia. 

 

https://drive.google.com/file/d/0B9XmGbvP31NjdURNbllJc2JCbDQ/view?usp=sharing

 

Me ajuda nessa ai por favor. 

Link para o comentário
Compartilhar em outros sites

Mas por favor me ajuda só mais nessa!o arquivo continua o mesmo do link abaixo eu só acrescentaria depois da coluna "I" mais três colunas para Ficar 6 colunas de previsão clonando os valores. da coluna "E" seguindo a mesma sequencia. 

 

https://drive.google.com/file/d/0B9XmGbvP31NjdURNbllJc2JCbDQ/view?usp=sharing

 

 

 

Nesse último link você disponibilizou o mesmo arquivo anterior sem qualquer alteração. Qual é a sua ideia, que eu faça o trabalho de alteração da estrutura da planilha pra você, acrescentando colunas, inserindo textos, formatando, ... ? :confused:

Essa lição de casa é sua, amigão... :angry:

Posso te ajudar fazendo as alterações no código, na boa, mas só depois que você fizer a sua parte no trabalho. -_-

Link para o comentário
Compartilhar em outros sites

Ola @osvaldomp

 

https://drive.google.com/file/d/0B9XmGbvP31NjU1lHNDI4TDRnNlU/view?usp=sharing

 

Segue link.As colunas em amarelo foram as que foram acrescentadas o principio continua  o mesmo que é o conceito de clonar os dados nas colunas de H até N a partir dos dados coletados via formula na coluna F ( antes esses dados nasciam na coluna E). Em sequencia ou seja a cada mudança na coluna F os clones vão sendo criados uma mudança por vez. E a coluna F continua com o valor atual .

 

A formulas estão na linha 6 

 

Muito obrigado!

Link para o comentário
Compartilhar em outros sites

Veja se é isso:

Private Sub Worksheet_Calculate() Dim c As Range, LR As Long, k As Long  LR = Cells(Rows.Count, 6).End(xlUp).Row  'ActiveSheet.Protect "comercial4529", UserInterFaceOnly:=True   On Error GoTo gout   Application.EnableEvents = False   For Each c In Range("F6:F" & LR)    If c.Value > 0 And c.Value <> c.Offset(, 21).Value Then     k = Application.CountA(Range(Cells(c.Row, 8), Cells(c.Row, 14))) + 8      If k < 15 Then Cells(c.Row, k) = c.Offset(, 21).Value      c.Offset(, 21).Value = c.Value    End If   Next cgout:Application.EnableEvents = TrueEnd Sub
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Olá @osvaldomp

 

Tudo funcionou perfeitamente, você é um excelente orientador!

 

até breve


Oi @osvalmp , bom dia

 

 

você respondeu ao tópico 

[Resolvido] Como fazer uma Macro do Excel para ficar mudando de Plan a cada 01 minuto

 

e me interessa bastante porém está fechado para comentários , com eu poderia fazer para reabri-lo, a solução que está la presente me atende quase na sua totalidade só falta um detalhe  e sei que não podemos ficar falando de outros assuntos aqui nesse post.

 

 

Agradeço e aguardo

Link para o comentário
Compartilhar em outros sites

Sugiro que você abra um tópico com o novo assunto.

 

Se o código que foi postado no outro tópico "quase te atende" você pode colocá-lo no seu novo tópico, para servir de referência, acompanhado dos comentários sobre a sua necessidade.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...