none
Ajuda com a função HasFormula RRS feed

  • Pergunta

  • Pessoal, preciso de ajuda com a função HasFormula. Estou usando a VBA abaixo que aprendi aqui, mas só funciona se eu especificar a celular, ou seja "A1, B1, etc". Não funciona por exemplo se em vez de usar A1 eu usar a formula ENDEREÇO(1;1;4) que também retorna A1. Como resolvo isso para conseguir utilizar a formula ENDEREÇO dentro de TemFormula, dessa forma: 

    =SE(TemFormula(ENDEREÇO(1;1;4));"Valor calculado")


    Function TemFormula(r As Range) As Boolean
        If r.HasFormula Then TemFormula = True
    End Function

    sábado, 17 de março de 2018 19:23

Todas as Respostas

  • Testei e funcionou:

    Function TemFormula(r As String) As Boolean
    
    Dim r1 As Range
    
    Set r1 = Range(r)
        If r1.HasFormula Then TemFormula = True
    End Function


    A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com

    domingo, 18 de março de 2018 00:59
  • Anderson, funcionou. Mas deu dois problema. O primeiro é que agora a fórmula funciona usando "ENDEREÇO()", mas não funciona usando a célula diretamente. O segundo problema, que é mais crítico é que não está atualizando o resultado. Eu alterno a célula entre uma fórmula e um número qualquer, mas a célula que tem a função "TemFormula" não muda. Só muda quando entro na expressão e aperto Enter. Consegue me ajudar a resolver isso também?
    domingo, 18 de março de 2018 12:52
  • Olá, boa tarde!

    Para executar sempre basta torná-la volátil:

    Function TemFormula(r As Range) As Boolean

    Application.Volatile

    If r.HasFormula Then TemFormula = True
    End Function

    E para utilizar a função "Endereço" com saída "Range", concatene com a função "Indireto":

    =SE(TemFormula(INDIRETO(ENDEREÇO(1;1;4)));1;0)

    Abraço.


    Filipe Magno

    domingo, 18 de março de 2018 18:14
  • Show!!! Funcionou perfeitamente usando a função "INDIRETO" e tornando volátil.

    Pessoal coloque como resolvido. Obrigado a todos pela ajuda.

    • Editado RBMartins domingo, 18 de março de 2018 22:31
    domingo, 18 de março de 2018 22:25
  • Você é que deve clicar em marcar como resposta na parte que resolveu seu problema.

    A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com

    terça-feira, 20 de março de 2018 13:05