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
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
.