Notifications
Clear all

Evento Change rodar para mais de uma célula alterada na plan

5 Posts
3 Usuários
0 Reactions
1,458 Visualizações
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Como inserir uma segunda opção no código abaixo?.

Pelo código abaixo, se houver uma alteração na célula C7 é executado o resto do código, mas eu queria que esse resto do código fosse executado se houvesse uma alteração na célula C7 ou na célula N40...

Obrigado!

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$7" Then                        ' APÓS QUALQUER ALTERAÇÃO NA CÉLULA DO Nº MAPP
Application.ScreenUpdating = False
 
Postado : 07/04/2015 6:41 am
Weslley
(@weslley)
Posts: 90
Trusted Member
 
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$7" Or Target.Address = "$N$40" Then
        MsgBox "Mexeu na celula"
    End If
End Sub

Se a resposta foi útil, clique na mãozinha do lado da ferramenta Citar

Atenciosamente,

Weslley Henrique S.S.
MOS (Microsoft Office Specialist)

"O impossível é uma questão de tempo!"
(Alberto Saltiel)

 
Postado : 07/04/2015 7:00 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tem o jeito mais fácil, acima, mas que não funciona se vc selecionar diversas células e dentre elas, a C7 ou a N40.
Digamos, selecione o intervalo de b5 a e10 e digite "texto" e tecle Ctrl+Enter. Assim vc escreve em todas as células ao mesmo tempo, e o endereço do target (target.address) não é só $C$7, pois vc tem mais coisas mudando, o endereço neste exemplo é $B$5:$E$10. Assim seu código não funcionará, pois a célula C7 está no meio, e seu código não vai identificá-la e a msgbox não aparecerá.

Eu diria que o ideal seria o código abaixo:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Planilha    As Excel.Worksheet
Dim Celula      As Excel.Range

    Set Planilha = Target.Parent
    With Application
        Set Celula = .Intersect(Target, Planilha.Range("$C$7"))
        If Celula Is Nothing Then
            Set Celula = .Intersect(Target, Planilha.Range("$N$40"))
        End If
    End With
    
    If Not Celula Is Nothing Then
        MsgBox "Mexeu na celula"
        Exit Sub
    End If

    Set Celula = Nothing
    Set Planilha = Nothing
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/04/2015 10:54 am
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Obrigado! Fiz uma pesquisa, adaptei e cheguei ao mesmo resultado.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$7" Or Target.Address = "$N$40" Then
        MsgBox "Mexeu na celula"
    End If
End Sub
 
Postado : 08/04/2015 1:54 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vc vai ter problemas. Lembre disso.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/04/2015 9:45 pm