Excel Precedents.Count retornando valor incorreto dentro da fórmula da célula

2

A propriedade do Excel Precedents.Count está retornando um valor diferente dentro de uma fórmula de célula do que o valor mostrado ao chamar a mesma função dentro da janela imediata.

Veja abaixo a função e o código de teste.

Function CountPrecedents()
  CountPrecedents = Range("A1").Precedents.Count
End Function

Sub TestCountPrecedents()
  Range("A1").Formula = "=B1+B2"
  Range("C1").Formula = "=CountPrecedents()"
  Debug.Print "The cell value is " & Range("C1").Value
  Debug.Print "The true function value is " & CountPrecedents()
End Sub

A execução de TestCountPrecedents na janela Immediate resulta na seguinte saída:

The cell value is 1
The true function value is 2

Por que a função da célula teria um valor diferente da janela imediata? Não consigo replicar esse comportamento com outras propriedades Range .

    
por davidmneedham 06.11.2017 / 18:47

1 resposta

1

Esta é uma limitação do uso dessa propriedade em um UDF() baseado em célula.

O mesmo UDF funcionará corretamente se chamado de dentro de um sub:

Sub MAIN()
    MsgBox CountPrecedents()
End Sub
    
por 06.11.2017 / 22:31