AÇÃO AO EDITAR CELU...
 
Notifications
Clear all

AÇÃO AO EDITAR CELULA

3 Posts
2 Usuários
0 Reactions
715 Visualizações
(@marcel_86)
Posts: 2
New Member
Topic starter
 

Olá, boa tarde.

Não tenho muito conhecimento em VBA e estou buscando ajuda dos colegas do fórum para elaborar um código que execute a rotina abaixo:

Existe um intervalo de células (b19:b22), quando o usuário alterar qualquer valor cadastrado nessas células, a planilha irá limpar o conteúdo de uma célula especifica (J7).

Desde já grato pela atenção.

 
Postado : 14/02/2018 2:48 pm
(@klarc28)
Posts: 971
Prominent Member
 
Private Sub Worksheet_Change(ByVal Target As Range)
'Dim intervalo As Range
'Set intevalo = Plan1.Range("B19:B22")

If Not Intersect(Target, Range("B19:B22")) Is Nothing Then
Range("J7").Value = ""

End If

End Sub

Cinco dicas que foram muito úteis para mim:

1) Quando não sei fazer algo no VBA, vou ao menu EXIBIÇÃO >> MACROS >> GRAVAR MACRO
Faço o que eu quero aí volto ao menu EXIBIÇÃO >> MACROS >> PARAR GRAVAÇÃO
Aperto Alt + F11 e vejo como a macro fez aqui. Tento entender e tento adaptar.

2) Quando vou criar um código e o resultado não está saindo como o esperado, entro no código e vou apertando F8 para executar passo a passo, aí vou passando o mouse sobre as variáveis para verificar se o valores delas estão corretos, já consertei milhares de códigos dessa forma.

3) Antes de executar o código, vou ao menu Depurar >> Compilar. Isso ajuda corrigir erros mais simples, como o nome de uma variável digitado errado.

4) Declaro todas as variáveis. Isso também evita erros.

5) Sempre uso o Option Explicit lá no início. Ele me obriga a declarar as variáveis.

 
Postado : 14/02/2018 3:07 pm
(@marcel_86)
Posts: 2
New Member
Topic starter
 

klarc28

Muito obrigado pelas dicas e pelo referencial de código meu amigo.

Desde a criação do tópico até sua resposta o projeto mudou um pouco, apareceram mais intervalos a incluir com essa condição, mas com suas dicas consegui fazer a inclusão dos novos intervalos sem problemas.

A sub final ficou assim:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'Dim intervalo As Range
'Set intevalo = Plan1.Range ("c19:c22,c26:c44,h19:h36")

If Not Intersect(Target, Range("c19:c22,c26:c44,h19:h36")) Is Nothing Then
Range("J7").Value = ""

End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

Mais uma vez muito obrigado :geek:

 
Postado : 15/02/2018 7:35 am