Note: The other languages of the website are Google-translated. Back to English

Como limpar o conteúdo da célula especificada se o valor de outra célula for alterado no Excel?

Suponha que você queira limpar um intervalo de conteúdo de célula especificado se o valor de outra célula for alterado, como você pode fazer? Esta postagem vai mostrar um método para resolver esse problema.

Limpe o conteúdo da célula especificada se o valor de outra célula mudar com o código VBA


Limpe o conteúdo da célula especificada se o valor de outra célula mudar com o código VBA

Como mostrado na captura de tela abaixo, quando o valor na célula A2 é alterado, o conteúdo na célula C1: C3 será apagado automaticamente. Faça o seguinte.

1. Na planilha, você limpará o conteúdo da célula com base nas alterações de outra célula, clique com o botão direito na guia da planilha e selecione Ver código no menu de contexto. Veja a imagem:

2. Na abertura Microsoft Visual Basic para Aplicações janela, copie e cole abaixo do código VBA na janela de código.

Código VBA: Limpe o conteúdo da célula especificada se o valor de outra célula mudar

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2")) Is Nothing Then
        Range("C1:C3").ClearContents
    End If
End Sub

Nota: No código, B2 é a célula na qual você limpará o conteúdo da célula e C1: C3 é o intervalo do qual você limpará o conteúdo. Altere-os conforme necessário.

3. aperte o outro + Q chaves para fechar o Microsoft Visual Basic para Aplicações janela.

Então você pode ver o conteúdo no intervalo C1: C3 é apagado automaticamente quando o valor na célula A2 muda conforme a captura de tela abaixo mostrada.


Artigos relacionados:


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2021 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos de avaliação gratuita de 30 dias. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (37)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
O código para limpar uma célula se outra mudar funciona muito bem!!!! Mas eu preciso que funcione ao contrário..... Como esse código é escrito??


Obrigado pela vossa ajuda
Este comentário foi feito pelo moderador no site
Caro Scott,
O que você quer dizer com trabalhar ao contrário? Ao limpar manualmente o conteúdo de determinadas células (C1:C3), limpe o conteúdo da célula A2 automaticamente?
Este comentário foi feito pelo moderador no site
Olá, isso funciona apenas para uma célula de origem fixa (A2), como fazer isso dinamicamente, como a origem é uma célula variável? eu tentei escrever
A=célulaativa.linha
If Not Intersect(Target, Range("A"& A)) não é nada então
Range("C1:C3").LimparConteúdo
Se acabar

isso deve fazer o trabalho em relação à célula ativa (ou seja, seleção), mas não está funcionando
obrigado
Este comentário foi feito pelo moderador no site
Bom dia,
Por favor, tente o código VBA abaixo. Obrigado pelo seu comentário.

Private Sub Worksheet_Change (ByVal Target As Range)
If (Not Intersect(Target, Rows(1)) Is Nothing) E (Target.Count = 1) Then
Range("C1:C3").LimparConteúdo
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Oi, estou procurando uma maneira de limpar um intervalo de células de dados quando um "x" é inserido em uma determinada célula. Eu usei a fórmula acima e funcionou perfeitamente para essa linha. O problema é que eu preciso estendê-lo para muitas linhas. Por exemplo, se um "x" for inserido em "D13", preciso que o intervalo J:13 - v:13 seja limpo. Eu também preciso que isso aconteça se um x for inserido em "D14", pois preciso que o intervalo d:14 - v:14 seja limpo. Existe uma maneira de escrever isso? Obrigado pela ajuda!
Este comentário foi feito pelo moderador no site
Oi isso não está funcionando para o meu. Nada muda, mas também não há erros. Alguma dica?
Este comentário foi feito pelo moderador no site
Dia bom,
Desculpe pela inconveniência. Você forneceria sua versão do Office? Obrigado por seu comentário.
Este comentário foi feito pelo moderador no site
No caso do A2, como faço para referenciar uma célula de uma planilha diferente?
Este comentário foi feito pelo moderador no site
alguma maneira de fazer isso sem VBA?
Este comentário foi feito pelo moderador no site
Olá Sonia,
Não encontrei nenhuma solução, exceto o VBA. Obrigado por seu comentário.
Este comentário foi feito pelo moderador no site
Que código VBA devo usar se tiver uma tabela e precisar de vários espaços em branco?

Minha mesa é B3:E7. Se o conteúdo da coluna B for limpo, gostaria que os dados da coluna C, D, E fossem limpos para essa linha. Eu tenho o abaixo para a linha 3, mas gostaria do mesmo nas linhas 4,5,6 e 7.

Private Sub Worksheet_Change (ByVal Target As Range)
If Not Intersect(Target, Range("B3")) Não é Nada Então
Range("C3:E3").LimparConteúdo
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Que tal um para limpar o conteúdo de qualquer célula em um clique duplo?
Este comentário foi feito pelo moderador no site
Oi, como você repete o código para mais de uma célula no exemplo, ou seja, se eu excluir o conteúdo das células a4 & a5, quero limpar o conteúdo de b4:z4 & b5:z5 respectivamente, preciso fazer isso para uma planilha grande com 1000 linhas, qualquer conselho será muito apreciado
Este comentário foi feito pelo moderador no site
Oi Julian, eu também estou procurando o mesmo, por favor, deixe-me saber se você tem alguma solução para isso.
Este comentário foi feito pelo moderador no site
Por favor, altere os números de acordo
Dim i As Integer
Private Sub Worksheet_Change (ByVal Target As Range)
Para i = 2 Para 10
lookrange = "A" & i
contentrange = "B" & i & ":" & "C" & i
If Not Intersect(Target, Range(lookrange)) Não é nada então
Range(intervalo de conteúdo).ClearContents
Se acabar
Proximo eu
End Sub
Este comentário foi feito pelo moderador no site
Oi sagarsrinivas0312,Muito obrigado por este código. Já estou a uma semana procurando essa solução!
Este comentário foi feito pelo moderador no site
Isso é ótimo, obrigado. Como faço isso várias vezes ... então limpe outras células com base em uma coluna diferente?
Este comentário foi feito pelo moderador no site
riusciresti a scrivermelo no modo che debba solo fare copiado ed incolla?
non riesco veramente a farlo funzionare

muito obrigado
Este comentário foi feito pelo moderador no site
Oi,
estou tentando limpar as células extras da coluna A e B se encontrar células em branco na coluna C da planilha chamada "Vendida" e a macro for executada na planilha chamada "Fatura".

Eu tenho o código abaixo de um site de ajuda, mas não consigo o meu desejado.
por favor me ajude sobre isso. Captura de tela em anexo o que eu quero.

Soma Limpar()

Dim g enquanto
Para g = 2 Para ActiveSheet.UsedRange.Rows.Count
If Cells(g, "C").Value = "" Then
Células(g, "A").LimparConteúdo
Células(g, "B").LimparConteúdo

Se acabar
Seguinte
Soma Final
Este comentário foi feito pelo moderador no site
Isso não parece funcionar se o conteúdo da célula especificada for controlado por uma célula em outra planilha? Existe uma correção para isso?
Exemplo usando seus nomes de células
Se a célula "A2" for (=sheet1[@[a5]] e esse número for alterado na planilha 1, alterar o conteúdo de A2, ele não limpará o conteúdo no intervalo especificado.
Este comentário foi feito pelo moderador no site
Sub-Planilha Particular_Activate ()
If Range("S2") <> Range("A2").Value Then
Range("S2") = Range("A2").Value
Range("d2:g2").LimparConteúdo
Se acabar
'S2' pode ser substituído por qualquer célula fora do intervalo de dados. O que o VBA está fazendo é atualizar automaticamente os dados para 'S2', então os dados que estão sendo atualizados são o que controla o intervalo especificado e se ele é ou não limpo.
Esta é a única maneira que encontrei para fazer isso com sucesso ao usar células referenciadas dentro e fora da planilha.
Este comentário foi feito pelo moderador no site
Não é bem o que eu preciso, mas chegando lá.Eu tenho uma célula vazia E3.Eu tenho dados em B3.Quando eu coloco dados no E3, se for o mesmo que B3 então B3 é deletado.Espero que você possa me ajudar.
Este comentário foi feito pelo moderador no site
É possível limpar o conteúdo da célula especificada se a célula acionadora contiver um número específico? Digamos, SE a célula A1 = 1, desmarque as células A2:A4?
Este comentário foi feito pelo moderador no site
Bonjour tout le monde,

Besoin d'aide, j'ai besoin d'effacer le contenu d'une cellule de la colonne "I" si la cellule (de la même ligne) de la colonne "O" =0, sur environ 2000 lignes avec des titres tout le 10 linhas environ.
Este comentário foi feito pelo moderador no site
Olá,

Apenas procurando uma maneira fácil de fazer isso, se "B2" tiver selecionado "Sim" na lista de validação de dados, a célula B3 limpará seus dados ... e vice-versa: Se "B3" tiver selecionado "Sim" na lista lista de validação de dados, a célula "B2" limparia seus dados.

Basicamente B2 or B3 pode falar "Sim"(da lista de validação de dados), mas nunca ao mesmo tempo, um deve limpar o outro.
Este comentário foi feito pelo moderador no site
Oi Jeff,
O seguinte código VBA pode lhe fazer um favor. Por favor, tente.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220721
If Target.Cells.Count > 1 Then Exit Sub
    If (Not Intersect(Target, Range("B2")) Is Nothing) And (Target.Value = "Yes") Then
        Range("B3").ClearContents
        Else
        If (Not Intersect(Target, Range("B3")) Is Nothing) And (Target.Value = "Yes") Then
        Range("B2").ClearContents
    End If
    End If
End Sub
Este comentário foi feito pelo moderador no site
Buongiorno, avrei bisogno di cancellare uma serie di caselle (un rettangolo, quindi su mais righe e colonne) em base al valore di un'altra cella. es: se a cela A2 é inferior a 12, o quadrado com vértices opostos C2 : F4 venga cancelado.
Muito obrigado
Este comentário foi feito pelo moderador no site
Olá Pietro,
Desculpe não entendi muito bem sua pergunta. Você se importa de enviar uma captura de tela dos seus dados?
Este comentário foi feito pelo moderador no site
Помогите с решением, VBA не знаю. Мне нужно при изменении ячейки удалить данные из другой e чтобы это дейстовало на весь столбец.
Меняю А2 удаляется из G2, меняю А3 удаляется из G3, меняю A6 удаляется из G6 e т.д.

Private Sub Worksheet_Change (ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Não é Nada Então
Range("G2").LimparConteúdo
Se acabar
End Sub


Данный код хорош для одной ячейки, а как его размножить на все ячейки столбца?
Este comentário foi feito pelo moderador no site
Olá Наталья,
O código VBA a seguir pode ajudá-lo a resolver o problema. Por favor, tente.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20221013
    Dim xRight As Range
    Dim KeyCells As Range
    Set KeyCells = Range("A:A")
    Set xRight = Target.Offset(0, 6)
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        xRight.ClearContents
    End If
End Sub
Este comentário foi feito pelo moderador no site
Olá,

Zu Punk 3.
Die Taste "Andere" Encontre ich nicht auf meiner Windows Tastatur. Ich Habe Strg, Alt, Tab... Allerdings die Taste Andere gibt es auf meiner Tastatur leider nicht.

Lieben Gruß Mathias
Este comentário foi feito pelo moderador no site
Olá Mathias,
Se você não conseguir encontrar a tecla correspondente no teclado. Você pode simplesmente clicar no Salvar botão no Janela de aplicativos do Microsoft Visual Basic para salvar o código e, em seguida, fechar manualmente esta janela.
Este comentário foi feito pelo moderador no site
Olá,
O código abaixo funciona como anunciado, mas ocorre o seguinte problema:

Em primeiro lugar, ao redimensionar a tabela de destino, todos os dados da tabela são limpos E, todos, exceto os cabeçalhos da coluna 1, são rotulados como "Coluna1, Coluna2, etc. E a pasta de trabalho salva automaticamente e elimina o desfazer.

Em segundo lugar, ao excluir qualquer linha da tabela, recebo um "Erro em tempo de execução 1004 (O deslocamento do método do intervalo do objeto falhou.


Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F3:F500")) Is Nothing Then
     Target.Offset(0, 1).ClearContents
    ElseIf Not Intersect(Target, Range("G3:G500")) Is Nothing Then
        Target.Offset(0, 1).ClearContents
        Target.Offset(0, 2).ClearContents
    ElseIf Not Intersect(Target, Range("H3:H500")) Is Nothing Then
        Target.Offset(0, 1).ClearContents
    End If
End Sub


Alguma ideia do que pode estar errado?

Obrigado antecipadamente!
Este comentário foi feito pelo moderador no site
Olá, estou trabalhando em uma base de dados no OFFICE ONLINE através do ONEDRIVE, quero que o PONER "CANCELADO" ou "NOSHOW" elimine o conteúdo da fila selecionada.
Este comentário foi feito pelo moderador no site
Olá anjo,
O código VBA não funciona no Office Online. Desculpe pela inconveniência.
Não há comentários postados aqui ainda
carregar mais
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos

Siga-nos

Copyright © 2009 - www.extendoffice.com. | Todos os direitos reservados. Distribuído por ExtendOffice. | | | Mapa do site
Microsoft e o logotipo do Office são marcas comerciais ou marcas registradas da Microsoft Corporation nos Estados Unidos e / ou em outros países.
Protegido por Sectigo SSL