Ir ao conteúdo
  • Cadastre-se

Macro para substituir valor ao digitar em outra célula


Ir à solução Resolvido por Visitante,

Posts recomendados

Prezados,

Não entendo nada de VBA, porém preciso de uma macro que seja capaz de substituir o valor que está na célula A1 (que originalmente vem com o valor 1), quando nas células B1 ou C1 (que originalmente estão em branco) eu digitar o valor 1, a célula A1 fique em branco. Entre as 3 células (A1, B1 e C1) apenas uma célula pode ter o valor 1, lembrando que a célula A1 já vem com o valor preenchido.

Não sei se consegui explicar direito.

Desde já agradeço.

Atenciosamente.

Link para o comentário
Compartilhar em outros sites

Olá, Tayana.

 

Se você vai acessar o intervalo 'A1:C1' somente com o fim de colocar o valor 1 em uma daquelas células, experimente o código abaixo.

 

funcionamento - ao acessar uma das células do intervalo citado, o código colocará nela o valor 1 e tornará vazias as outras duas células do intervalo.

 

Instale o código abaixo no módulo da planilha, assim:
1. copie o código daqui
2. clique com o direito na guia da planilha de interesse e escolha 'Exibir código'
3. cole o código na janela em branco que vai se abrir
4. feito! 'Alt+Q' para retornar para a planilha e testar
 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("A1:C1")) Is Nothing Then Exit Sub Range("A1:C1") = "" Target.Value = 1End Sub
Link para o comentário
Compartilhar em outros sites

Osvaldomp,

 

Obrigada pela atenção, porém acho que não expliquei certo o que pretendo.

 

Então estou enviando um arquivo para exemplificar melhor.

 

Mais uma vez obrigada.

 

 

 

Olá, Tayana.

 

Se você vai acessar o intervalo 'A1:C1' somente com o fim de colocar o valor 1 em uma daquelas células, experimente o código abaixo.

 

funcionamento - ao acessar uma das células do intervalo citado, o código colocará nela o valor 1 e tornará vazias as outras duas células do intervalo.

 

Instale o código abaixo no módulo da planilha, assim:
1. copie o código daqui
2. clique com o direito na guia da planilha de interesse e escolha 'Exibir código'
3. cole o código na janela em branco que vai se abrir
4. feito! 'Alt+Q' para retornar para a planilha e testar
 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("A1:C1")) Is Nothing Then Exit Sub Range("A1:C1") = "" Target.Value = 1End Sub

 

EXEMPLO.xlsx

Link para o comentário
Compartilhar em outros sites

 

Obrigada pela atenção, porém acho que não expliquei certo o que pretendo.

 

 

Me parece que você não testou o código que sugeri, :( pois ele faz exatamente o que você relatou, no intervalo que você informou no post #1. :P A diferença é que não é necessário digitar o valor 1 na célula. ;)

 

Faça o teste e veja se o funcionamento apresenta o resultado esperado. Depois ajustaremos o código para outros intervalos. Mas você precisa passar as informações com exatidão, assim, no post #1 você pediu que funcionasse no intervalo 'A1:C1', já no exemplo que você disponibilizou os intervalos são outros. E aí ???

 

Se você está querendo encontrar uma solução que funcione em um intervalo qualquer e depois aplicar essa solução em outros intervalos por sua conta, pela experiência com fóruns, adianto que essa estratégia em 99% dos casos não funciona. :confused:

 

Por isso sugiro que você informe com exatidão o que quer fazer e onde. :)

Link para o comentário
Compartilhar em outros sites

Boa tarde Osvaldomp,

 

De fato não soube explicar o que preciso.

Na planilha EXEMPLO que enviei é justamente a ideia do que preciso, é um intervalo de dados (3 colunas e várias linhas), porém cada linha deve conter apenas 1 coluna preenchida, ao digitar o número 1 em uma célula as outras duas devem ficar em branco.

 

Mais uma vez obrigada pela ajuda e desculpa qualquer transtorno.

 

Atenciosamente,

 

Me parece que você não testou o código que sugeri, :( pois ele faz exatamente o que você relatou, no intervalo que você informou no post #1. :P A diferença é que não é necessário digitar o valor 1 na célula. ;)

 

Faça o teste e veja se o funcionamento apresenta o resultado esperado. Depois ajustaremos o código para outros intervalos. Mas você precisa passar as informações com exatidão, assim, no post #1 você pediu que funcionasse no intervalo 'A1:C1', já no exemplo que você disponibilizou os intervalos são outros. E aí ???

 

Se você está querendo encontrar uma solução que funcione em um intervalo qualquer e depois aplicar essa solução em outros intervalos por sua conta, pela experiência com fóruns, adianto que essa estratégia em 99% dos casos não funciona. :confused:

 

Por isso sugiro que você informe com exatidão o que quer fazer e onde. :)

 

Link para o comentário
Compartilhar em outros sites

 

Na planilha EXEMPLO que enviei é justamente a ideia do que preciso, é um intervalo de dados (3 colunas e várias linhas), porém cada linha deve conter apenas 1 coluna preenchida, ao digitar o número 1 em uma célula as outras duas devem ficar em branco.

 

 

Você ainda não informou sobre o resultado do código que eu sugeri.

Antes de preparar um código que funcione no arquivo que você disponibilizou você precisa testar o código que sugeri e verificar se a mecânica do código serve pra você.

 

obs. ao postar questões em mais de fórum simultaneamente é recomendável informar sobre o fato em todos os fóruns nos quais postou, como por exemplo nesse abaixo.

 

http://forum.baboo.com.br/index.php?/topic/776522-macro-para-substituir-valor-ao-digitar-em-outra-c%C3%A9lula/

Link para o comentário
Compartilhar em outros sites

Osvaldomp,

 

Sim, testei seu código, achei maravilhoso, o código escolhe somente uma célula e deixa em branco as outras, justamente o que preciso, porém preciso fazer isso em várias linhas e se possível digitar na célula e não ao clicar na célula, pois como se trata de uma planilha com várias linhas fico com receio de clicar sem querer na célula e seleciona-la sem querer.

 

Sobre os outros posts em outros sites, fiz porque realmente preciso de ajuda.

 

Obrigada.

Você ainda não informou sobre o resultado do código que eu sugeri.

Antes de preparar um código que funcione no arquivo que você disponibilizou você precisa testar o código que sugeri e verificar se a mecânica do código serve pra você.

 

obs. ao postar questões em mais de fórum simultaneamente é recomendável informar sobre o fato em todos os fóruns nos quais postou, como por exemplo nesse abaixo.

 

http://forum.baboo.com.br/index.php?/topic/776522-macro-para-substituir-valor-ao-digitar-em-outra-c%C3%A9lula/

Link para o comentário
Compartilhar em outros sites

  • Solução

 

... porém preciso fazer isso em várias linhas e se possível digitar na célula e não ao clicar na célula...

Instale o código abaixo no lugar do anterior. O código é válido para o exemplo que você disponibilizou no post #3.

 

Sobre os outros posts em outros sites, fiz porque realmente preciso de ajuda.

Perfeito. O que se espera é que a postagem cruzada seja informada em todos os fóruns postados para evitar que pessoas percam seu tempo elaborando solução para uma questão que pode já ter sido resolvida em outro fórum.

 

Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B4:D6")) Is Nothing Then Exit Sub Application.EnableEvents = False  Cells(Target.Row, 2).Resize(, 3).Value = ""  Target.Value = 1 Application.EnableEvents = TrueEnd Sub

 

Link para o comentário
Compartilhar em outros sites

Osvaldomp,

 

Funcionou perfeitamente....OBRIGADA....

 

Se não se importar, posso postar no outro site, que você conseguiu resolver o problema??

 

Mais uma vez OBRIGADA!

 

Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B4:D6")) Is Nothing Then Exit Sub Application.EnableEvents = False  Cells(Target.Row, 2).Resize(, 3).Value = ""  Target.Value = 1 Application.EnableEvents = TrueEnd Sub
Link para o comentário
Compartilhar em outros sites

Se não se importar, posso postar no outro site, que você conseguiu resolver o problema??

 

 

 

Tayana, que bom que resolveu. Ficamos contentes.

Acho que seria oportuno você informar no outro fórum que a questão foi resolvida. Não me importo com o crédito. Sugiro que você coloque lá algo assim: resolvido com o código abaixo, e cole o código lá pois poderá ser útil para outras pessoas em consultas futuras.

Retorne se precisar de algum ajuste no código.

Link para o comentário
Compartilhar em outros sites

Osvaldomp,

 

Ao colocar o código na planilha que estou trabalhando e modificar as colunas de (B4:D6) para (E10:G59), o código não está funcionando corretamente, está apagando os valores das colunas vizinhas (H, I e J) provavelmente fiz algo errado.

 

 

Atenciosamente,

 

Tayana, que bom que resolveu. Ficamos contentes.

Acho que seria oportuno você informar no outro fórum que a questão foi resolvida. Não me importo com o crédito. Sugiro que você coloque lá algo assim: resolvido com o código abaixo, e cole o código lá pois poderá ser útil para outras pessoas em consultas futuras.

Retorne se precisar de algum ajuste no código.

Link para o comentário
Compartilhar em outros sites

 

Ao colocar o código na planilha que estou trabalhando e modificar as colunas de (B4:D6) para (E10:G59), o código não está funcionando corretamente, está apagando os valores das colunas vizinhas (H, I e J) provavelmente fiz algo errado.

Lembra do comentário abaixo? ;) Coloquei no post #3 aí acima... :D :D  :D  :P  :P  :P

 

 

Se você está querendo encontrar uma solução que funcione em um intervalo qualquer e depois aplicar essa solução em outros intervalos por sua conta, pela experiência com fóruns, adianto que essa estratégia em 99% dos casos não funciona. :confused:

 

Por isso sugiro que você informe com exatidão o que quer fazer e onde. :)

 

Sugiro que você disponibilize uma amostra do seu arquivo, com a estrutura de planilha exatamente igual à estrutura da planilha original. Informe na própria planilha se o intervalo utilizado é fixo ou variável. Por exemplo, se os dados do seu arquivo estão da coluna 'A' até a coluna 'J' e da linha 1 até a linha 500, informe se sempre os dados estarão nesse intervalo ('A1:J500') ou se poderá variar.

Informe também em quais linhas e colunas deseja aplicar o código.

Link para o comentário
Compartilhar em outros sites

Olá Osvaldomp,

 

Segue planilha que estou usando....tive que apagar algumas informações por se tratar de cunho confidencial.

A quantidade de linhas é variável...As colunas em questão são: E, F e G.

 

 

Atenciosamente,

Sugiro que você disponibilize uma amostra do seu arquivo, com a estrutura de planilha exatamente igual à estrutura da planilha original. Informe na própria planilha se o intervalo utilizado é fixo ou variável. Por exemplo, se os dados do seu arquivo estão da coluna 'A' até a coluna 'J' e da linha 1 até a linha 500, informe se sempre os dados estarão nesse intervalo ('A1:J500') ou se poderá variar.

Informe também em quais linhas e colunas deseja aplicar o código.

 

Painel exemplo 1.zip

Link para o comentário
Compartilhar em outros sites

Experimente.

Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("E:G")) Is Nothing Then Exit Sub Application.EnableEvents = False  If Target.Value = 1 Then   Cells(Target.Row, 5).Resize(, 3).Value = ""   Target.Value = 1  End If Application.EnableEvents = TrueEnd Sub

 

Link para o comentário
Compartilhar em outros sites

Osvaldo...

 

 

Funcionou.....nota 100000.....

 

 

OBRIGADA....

 

Experimente.

Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("E:G")) Is Nothing Then Exit Sub Application.EnableEvents = False  If Target.Value = 1 Then   Cells(Target.Row, 5).Resize(, 3).Value = ""   Target.Value = 1  End If Application.EnableEvents = TrueEnd Sub
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...