Como substituir a fórmula da célula por seu próprio valor via UDF?

2

Descrição do Problema

Eu tenho uma fórmula personalizada que escrevi, mas demora um pouco para calcular a resposta e, como o Excel atualiza os valores das funções (quando você ativa a pasta de trabalho ou reabre a pasta de trabalho etc.), não posso tê-la. -executando a função.

Tentei chamar um processo Sub para copiar a célula e colar valores ( Substitua uma fórmula pelo resultado ), mas ela retorna =#VALUE!. Provavelmente algo a ver com referências circulares ...

Pergunta, questão

Existe uma maneira de substituir a fórmula em uma célula com seu valor de dentro de uma fórmula definida pelo usuário?

Gruzzles
fonte

Respostas:

2

Não há como sobrescrever qualquer célula dentro de uma UDF, ela pode retornar apenas um valor.

Você pode usar a função Worksheet_Change para contornar isso ...

Na folha:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("A1"), Target) Is Nothing Then
    'do nothing - not worried about anything not in A1
Else
    Range("A1").Value = Range("A1").Value
End If
End Sub

Qualquer que seja a fórmula digitada em A1, na planilha em que você inseriu esse código, será convertida no valor e a fórmula removida.

SeanC
fonte
Obrigado! Eu acho que isso terá que fazer. Eu esperava colocar o UDF em um complemento do Excel (.xlam) para que ele estivesse disponível em todas as planilhas, mas acho que isso não é possível.
Gruzzles
1
  1. Selecionar célula
  2. Clique com o botão direito do mouse> Copiar (ou [CTRL] + [c])
  3. Clique com o botão direito do mouse> Colar Especial> Colar Valores

Isso deve substituir a fórmula pelo número / valor resultante.

Llamanerds
fonte
Obrigado, mas eu queria fazer isso de dentro da UDF (leia minha pergunta com mais atenção).
Gruzzles