A função personalizada pode não calcular o valor esperado no Excel
Artigo
Aplica-se a:
Microsoft Excel
Sintomas
Quando você calcula sua planilha, algumas células podem parecer ter calculado o valor errado.
Motivo
Este problema ocorre quando as seguintes condições são verdadeiras:
Uma célula na planilha contém uma função personalizada.
A função personalizada contém um ou mais argumentos que se referem a um intervalo de células na planilha.
O resultado da função personalizada depende de mais células do que referencia diretamente.
Esse comportamento é por design do Microsoft Excel. Quando o Excel calcula a célula que contém a função personalizada, ela recalcula todos os intervalos de células que são passados como argumentos para sua função personalizada. Se o resultado de sua função depender de células que não são explicitamente referidas pela função, essas células podem não ser recalculadas.
Solução alternativa
Para contornar esse problema, use qualquer um dos métodos a seguir.
Método 1: modificar sua função para que todos os intervalos de células relevantes sejam passados
Modifique sua função para aceitar como argumentos todas as células necessárias para calcular o resultado da função.
Método 2: tornar sua função personalizada volátil
A Microsoft oferece exemplos de programação somente para ilustração, sem garantias expressas ou implícitas. Isso inclui, mas não está limitado a, as garantias implícitas de qualidade comercial ou conformidade para uma determinada finalidade. Este artigo supõe que você conhece a linguagem de programação que está sendo demonstrada e as ferramentas usadas nos processos de criação e depuração. Os engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um procedimento específico, mas não modificarão esses exemplos para fornecer funcionalidade ou procedimentos de construção adicionais para atender aos seus requisitos específicos. Se você tornar sua função personalizada volátil, esse problema não ocorrerá. Para tornar sua função personalizada volátil, adicione a seguinte linha de código à função.
VB
Application.Volatile
Observação
Se você tornar sua função personalizada volátil, ela será recalculada sempre que você fizer uma alteração em um valor ou recalcular uma pasta de trabalho aberta. Isso pode afetar o desempenho do modelo de planilha.
Método 3: forçar o Excel a recalcular todas as pastas de trabalho abertas
Pressione CTRL+ALT+F9 para recalcular os valores em todas as pastas de trabalho abertas. No Microsoft Office Excel 2007, pressione CTRL+ALT+SHIFT+F9 para recalcular os valores em todas as pastas de trabalho abertas.
Mais informações
Exemplo do problema
Para ilustrar esse problema, siga estas etapas:
Feche e salve as pastas de trabalho abertas e abra uma nova pasta de trabalho.
Inicie o Visual Basic Editor (pressione ALT+F11).
No menu Inserir, clique em Módul o.
Digite o seguinte código na planilha de módulo:
VB
' This function counts the number of blank cells by starting from the cell ' referred to by the rngStartCell argument and moving up the column.Function FindTextUp(rngStartCell As Range) AsSingleDim iIndex AsIntegerFor iIndex = 0To100If rngStartCell.Value <> ""Then
FindTextUp = iIndex
ExitFunctionElseSet rngStartCell = rngStartCell.Offset(-1, 0)
EndIfNext iIndex
EndFunction
Pressione ALT+F11 para retornar ao Excel.
Digite Teste, na célula A2 e pressione ENTER.
Digite a seguinte fórmula na célula A10 e pressione ENTER:
excel
=FindTextUp(A9)
A fórmula retorna um valor de 7.
Digite Outro teste na célula A5 e pressione ENTER.
A fórmula ainda retorna um valor de 7, quando um valor de 4 é esperado. Neste exemplo, a função FindTextUp refere-se explicitamente à célula A9. No entanto, a função pode depender das células A1:A8, dependendo dos dados inseridos na planilha.
Se você implementar o método 1 na seção "Solução alternativa" deste artigo, a função calculará o resultado esperado. A linha de código a seguir ilustra como modificar a função neste exemplo para que o resultado esperado seja calculado.
VB
Function FindTextUp(rngStartCell As Range, rngOtherCells As Range) AsSingle
Agora, se você substituir a chamada de função na etapa 7 pela chamada de função a seguir, a função sempre retornará o resultado esperado.
Démontrez que vous avez les compétences nécessaires pour tirer le meilleur parti d’Excel 2019 en obtenant la certification d’expert de Microsoft Office Specialist (MOS).