Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Mudança de valor em qualquer célula da Coluna A
Mudança de valor em qualquer célula da Coluna A
Pessoal,
O código VBA abaixo, encontrei no Link: https://social.msdn.microsoft.com/Forum ... orum=vbapt
da forma que está escrito, só se baseia na mudança de valor da célula A1 ,
então Pergunto:
Teria como adaptá-lo para qualquer célula da Coluna A ? tipo assim :
If Not Intersect(Target, Range("A:A")) Is Nothing Then
================================================
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("A1")) Is Nothing Then
i = Sheets("Plan2").Cells(Rows.Count, "A").End(xlUp).Row + 1
Sheets("Plan2").Range("A" & i).Value = Date
Sheets("Plan2").Range("B" & i).Value = Time
Sheets("Plan2").Range("C" & i).Value = Sheets("Plan1").Range("A1").Value
End If
End Sub
O código VBA abaixo, encontrei no Link: https://social.msdn.microsoft.com/Forum ... orum=vbapt
da forma que está escrito, só se baseia na mudança de valor da célula A1 ,
então Pergunto:
Teria como adaptá-lo para qualquer célula da Coluna A ? tipo assim :
If Not Intersect(Target, Range("A:A")) Is Nothing Then
================================================
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("A1")) Is Nothing Then
i = Sheets("Plan2").Cells(Rows.Count, "A").End(xlUp).Row + 1
Sheets("Plan2").Range("A" & i).Value = Date
Sheets("Plan2").Range("B" & i).Value = Time
Sheets("Plan2").Range("C" & i).Value = Sheets("Plan1").Range("A1").Value
End If
End Sub
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Mudança de valor em qualquer célula da Coluna A
use:
[]s
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("A:A")) Is Nothing Then
i = Sheets("Plan2").Cells(Rows.Count, "A").End(xlUp).Row + 1
Sheets("Plan2").Range("A" & i).Value = Date
Sheets("Plan2").Range("B" & i).Value = Time
Sheets("Plan2").Range("C" & i).Value = Target.Value
End If
End Sub
Re: Mudança de valor em qualquer célula da Coluna A
Saudações sr. Mauro,
já aproveitando, quero lhe agradecer a ajuda prestada no tópico: Aprimorar código vba : Copiar e Colar
Quanto a este tópico, estou tentando usar o código assim:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("A:A")) Is Nothing Then
i = Sheets("Plan1").Cells(Rows.Count, "A").End(xlUp).Row
Range("C" & i).Value = Date
End If
End Sub
======================================================
objetivo : quando ocorrer uma mudança de valor em qualquer célula da coluna A, então o código deverá Lançar a Data na coluna "C", na mesma linha correspondente em que houve a mudança na coluna A (da mesma planilha).
exemplo: se houver mudança na célula A57 então a Data será Lançada na célula C57
fiz testes e notei que sempre Lança a data "somente" na última Linha correspondente.
Pergunta extra: este código servirá também para o caso de haver mudança de valor por fórmula ? ou seja, sem digitar na coluna A, somente mudar por ocorrência de uma fórmula ?
já aproveitando, quero lhe agradecer a ajuda prestada no tópico: Aprimorar código vba : Copiar e Colar
Quanto a este tópico, estou tentando usar o código assim:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("A:A")) Is Nothing Then
i = Sheets("Plan1").Cells(Rows.Count, "A").End(xlUp).Row
Range("C" & i).Value = Date
End If
End Sub
======================================================
objetivo : quando ocorrer uma mudança de valor em qualquer célula da coluna A, então o código deverá Lançar a Data na coluna "C", na mesma linha correspondente em que houve a mudança na coluna A (da mesma planilha).
exemplo: se houver mudança na célula A57 então a Data será Lançada na célula C57
fiz testes e notei que sempre Lança a data "somente" na última Linha correspondente.
Pergunta extra: este código servirá também para o caso de haver mudança de valor por fórmula ? ou seja, sem digitar na coluna A, somente mudar por ocorrência de uma fórmula ?
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Mudança de valor em qualquer célula da Coluna A
Atendendo sua MP, experimente:
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Range("C" & Target.Row).Value = Date
End If
End Sub
Re: Mudança de valor em qualquer célula da Coluna A
Saudações sr. Reinaldo,
o código do sr. executa corretamente a tarefa, MAS somente se a alteração de valor acontecer manualmente (digitando sobre o valor).
estou precisando que a tarefa seja executada se a alteração no valor acontecer por fórmula, pois na coluna "A" existem fórmulas ligadas às outras abas, então preciso que o código Lance a Data na coluna "C" se houver mudança de valor por fórmula .
acho que é através do evento: Private Sub Worksheet_Calculate()
o código do sr. executa corretamente a tarefa, MAS somente se a alteração de valor acontecer manualmente (digitando sobre o valor).
estou precisando que a tarefa seja executada se a alteração no valor acontecer por fórmula, pois na coluna "A" existem fórmulas ligadas às outras abas, então preciso que o código Lance a Data na coluna "C" se houver mudança de valor por fórmula .
acho que é através do evento: Private Sub Worksheet_Calculate()
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Mudança de valor em qualquer célula da Coluna A
Bom a pergunta inicial foi respondida e creio que atendida. Agora é outra a demanda
O Excel não permite um controle assim como você está "precisando", pode experimentar transferir a rotina para o evento Calculate, mas é um calcula/recalculo da planilha como um todo, independentemente se houveram modificações.
Para tanto, uma possibilidade é: ter um repositório do(s) valor(es) iniciais, e a cada "disparo" do evento calculate, verificar se o valor da celula foi alterado, se sim salvar o novo valor e gravar a data; mas isso com certeza irá refletir no desempenho da planilha.
O Excel não permite um controle assim como você está "precisando", pode experimentar transferir a rotina para o evento Calculate, mas é um calcula/recalculo da planilha como um todo, independentemente se houveram modificações.
Para tanto, uma possibilidade é: ter um repositório do(s) valor(es) iniciais, e a cada "disparo" do evento calculate, verificar se o valor da celula foi alterado, se sim salvar o novo valor e gravar a data; mas isso com certeza irá refletir no desempenho da planilha.
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Mudança de valor em qualquer célula da Coluna A
Como o Reinaldo ja disse, não temos esta opção diretamente, dá para se tentar alguns caminhos, só que tem de se pensar que toda vez que o excel fizer um recalculo vai percorrer todas as celulas com formula e deixar o processamento mais lento, temos como setar no calculate somente uma celula ou determinado range, mas para isto temos de saber como é todo o procedimento de sua aplicação :
Você diz que tem formulas na Coluna A, mas será digitados valores nesta aba ? ou na mesma não será digitado nada e as formulas fazem referencias a outras abas ?
[]s
Você diz que tem formulas na Coluna A, mas será digitados valores nesta aba ? ou na mesma não será digitado nada e as formulas fazem referencias a outras abas ?
[]s
Re: Mudança de valor em qualquer célula da Coluna A
Saudações aos srs. Reinaldo e Mauro Coutinho,
Senhores, entendi suas explicações !
e refletindo ao que disse o sr. Mauro Coutinho: temos como setar no calculate somente uma celula ....., tive uma idéia sobre o assunto.
respondendo a pergunta do sr. Mauro Coutinho, a resposta éh :
Re: na mesma não será digitado nada e as formulas fazem referencias a outras abas .
muito obrigado senhores.
Senhores, entendi suas explicações !
e refletindo ao que disse o sr. Mauro Coutinho: temos como setar no calculate somente uma celula ....., tive uma idéia sobre o assunto.
respondendo a pergunta do sr. Mauro Coutinho, a resposta éh :
Re: na mesma não será digitado nada e as formulas fazem referencias a outras abas .
muito obrigado senhores.
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Mudança de valor em qualquer célula da Coluna A
Utilizando o Evento Calculate, supondo que na Plan1 coluna A - Range(A2:A10) temos formulas que buscam os Valores na Plan2 Range(C2:C10), ou seja, digite na Plan2 e veja se é isto, lembrando que citou que na Plan1 não teremos digitação, sómente as formulas.
Evento Calculate
Evento Calculate
Re: Mudança de valor em qualquer célula da Coluna A
sr. Mauro,
Éh isso mesmo, MAS .. observei que se ocorrer números iguais na Range(A2:A10) da Plan1, então repetirá a Data para os números iguais que ocorreram.
Se puder evitar esta repetição de Data, será muito bom.
segue em anexo sua planilha com um exemplo do que estou falando.
OBS: no código VBA mudei "Date" para "Now" , pois será mais útil o Now para mim.
Éh isso mesmo, MAS .. observei que se ocorrer números iguais na Range(A2:A10) da Plan1, então repetirá a Data para os números iguais que ocorreram.
Se puder evitar esta repetição de Data, será muito bom.
segue em anexo sua planilha com um exemplo do que estou falando.
OBS: no código VBA mudei "Date" para "Now" , pois será mais útil o Now para mim.
- Anexos
-
- Evento calculate.rar
- (9.97 KiB) Baixado 212 vezes