none
Executar macro ao atualizar o valor de uma célula com fórmula e não manualmente RRS feed

  • Pergunta

  • Preciso de um código para chamar uma macro quando o valor de uma célula mudar. Essa célula é atualizada por fórmula, por isso o evento change não funciona. Tentei o evento calculate, mas quando executa, não para de calcular. Como posso executar essa macro? Obrigado.
    segunda-feira, 9 de fevereiro de 2015 19:59

Respostas

  • Experimente criar uma variável local e monitore-a regularmente:

    'Altere o endereço da célula que deseja monitorar:
    Const mcsAddress As String = "A1"
    
    Dim mvCell As Variant
    
    Private Sub Worksheet_Activate()
      getValue
    End Sub
    
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Range(mcsAddress).Value2 <> mvCell Then
        Application.EnableEvents = False
        
        MsgBox "Valor alterado!", vbExclamation
        
        getValue
        Application.EnableEvents = True
      End If
      
    End Sub
    
    Private Sub getValue()
      mvCell = Range(mcsAddress).Value2
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 10 de fevereiro de 2015 11:43
    Moderador

Todas as Respostas

  • Experimente criar uma variável local e monitore-a regularmente:

    'Altere o endereço da célula que deseja monitorar:
    Const mcsAddress As String = "A1"
    
    Dim mvCell As Variant
    
    Private Sub Worksheet_Activate()
      getValue
    End Sub
    
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Range(mcsAddress).Value2 <> mvCell Then
        Application.EnableEvents = False
        
        MsgBox "Valor alterado!", vbExclamation
        
        getValue
        Application.EnableEvents = True
      End If
      
    End Sub
    
    Private Sub getValue()
      mvCell = Range(mcsAddress).Value2
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 10 de fevereiro de 2015 11:43
    Moderador
  • Boa noite Felipe, utilizei essa macro que tu mencionou acima e funcionou muito bem, mas e seu quisesse abranger pra monitorar mais células? Como exemplo da célula A1:A10..
    terça-feira, 7 de novembro de 2017 20:30
  • Boa noite Felipe, estou tentando adaptar este código para quando o valor da célula A1 for 0 ou 1, ele acione a macro, porém a célula é alterado por fórmula como no exemplo anterior e preciso que ela acione a macro somente uma vez quando o valor da célula alterar pra 1 

    Const mcsAddress As String = "A1"

    Dim mvCell As Variant

    Private Sub Worksheet_Activate()
      getValue

    End Sub

    Private Sub Worksheet_Change(ByVal Target As Range)
      If Range(mcsAddress).Value2 <> mvCell Then
        Application.EnableEvents = False
        
        Call OpenProgram
        
        getValue
        Application.EnableEvents = True
      End If
      
    End Sub

    Private Sub getValue()
      mvCell = Range(mcsAddress).Value2
    End Sub


    sábado, 1 de setembro de 2018 01:24