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 valores de função (quando você ativa a pasta de trabalho ou reabre a pasta de trabalho etc.), não consigo tê-lo re-executando a função.

Eu 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

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

    
por Gruzzles 17.12.2012 / 19:54

2 respostas

2

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

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

Na planilha:

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 fórmula que você digitar em A1, na planilha em que você colocou esse código, será convertida no valor e a fórmula removida.

    
por 17.12.2012 / 22:40
1
  1. Selecionar célula
  2. Clique com o botão direito em > Copiar (ou [CTRL] + [c])
  3. Clique com o botão direito em > Colar especial > Colar valores

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

    
por 17.12.2012 / 20:19