XL97: Células que contêm funções definidas pelo usuário não recalculadas, retornar #Value

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 244466
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Quando você Recalcular uma planilha, células que contêm funções definidas pelo usuário não são recalculadas e retornam #Value.
Causa
Esse problema ocorre quando as seguintes condições forem verdadeiras:
  • O recálculo é invocado por meio do método Calculate.
    - e -
  • Ocorre um erro untrapped do tempo de execução em uma função definida pelo usuário (UDF) ao recalcular uma célula.
Quando ocorre o erro de tempo de execução, o Excel pára o recálculo da planilha. Todas as células que não foram atualizadas e estão referenciando o UDF retorna #Value.

No entanto, quando você atualiza a planilha pressionando o F9, somente as células no qual ocorreu o erro de runtime retorna #Value.
Resolução
Como Contornar
Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita, incluindo, mas não se limitando às garantias implícitas de comercialização e/ou adequação a uma finalidade específica. Este artigo presume que você esteja familiarizado com a linguagem de programação demonstrada e as ferramentas usadas para criar e depurar procedimentos. Profissionais de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades específicas.
Se você não tenha muita experiência de programação, talvez queira em contato com um Microsoft Certified Partner ou Microsoft Advisory Services. Para obter mais informações, visite da Microsoft:

Microsoft Certified Partners - https://partner.microsoft.com/global/30000104

Comunicado de Microsoft Services - http://support.microsoft.com/gp/advisoryservice

Para obter mais informações sobre as opções de suporte estão disponíveis e sobre como entrar em contato com a Microsoft, visite o seguinte site: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSPara contornar esse problema, pressione CTRL + as teclas ALT+F9 para forçar os valores a serem recalculados. Quando você fizer isso, qualquer fórmulas que se referem a funções definidas pelo usuário são recalculadas corretamente.

Para evitar que esse problema ocorra, adicione código de tratamento de erros à sua função definida pelo usuário, por exemplo:
   Function MyFunction(CellRange As Object) As String       On Error GoTo ErrorHandler                       'new line       If CellRange.Interior.Pattern = xlNone Then           MyFunction = "yes"       Else           MyFunction = "no"       End If       Exit Function                                    'new line   ErrorHandler:                                        'new line       '  You may want to use the following statement        '  to output the type of error result instead       '  of a string result.       'MyFunction = CVErr(xlErrValue)        MyFunction = "error"                             'new line   End Function				
in esta função definida pelo usuário, a linha "No erro GoTo ErrorHandler" faz com que a função continuar se ocorrerá um erro. Nesse caso, o código de tratamento de erros faz com que a função para retornar um valor de "erro", em vez de "Sim" ou "não". Depois que as fórmulas retornam "erro", pressione CTRL + ALT + F9 para recalcular a planilha.
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo.
Mais Informações
No Microsoft Excel 97, se uma função definida pelo usuário retorna um valor de erro, a fórmula que chamou a função definida pelo usuário e outras fórmulas que chamam a mesma função definida pelo usuário podem falhar ao ser recalculado corretamente. Quando isso ocorre, as fórmulas podem retornar um erro de # Value! erro.

Além disso, se a função definida pelo usuário retorna um valor de erro, pode parar de qualquer sub-rotina Visual Basic em execução que causou a recálculo ocorrer. Isso pode causar problemas se a sub-rotina estiver em execução autônoma.

Para ver exemplos desses problemas, execute essas etapas:
  1. No Microsoft Excel 97, crie uma nova pasta de trabalho.
  2. No menu Ferramentas e aponte para macro .
  3. Clique em Editor do Visual Basic e em seguida, no menu Inserir , clique em módulo .
  4. Digite o seguinte código para o novo módulo:
          Function MyFunction(CellRange As Object) As String          'This line will fail when you delete a row from the worksheet.          If CellRange.Interior.Pattern = xlNone Then              MyFunction = "yes"          Else              MyFunction = "no"          End If      End Function      Sub TestDelete()          Rows(2).Delete              'Deleting a row forces                                      'recalculation.          MsgBox "Delete succeeded."      End Sub					
  5. No menu arquivo , clique em Fechar e voltar para Microsoft Excel .
  6. Selecione A10:A12 células na planilha e em seguida, digite a fórmula a seguir e, em seguida, pressione CTRL+ENTER:
    =MyFunction(C10)						
    todas as três células (A10, A11, A12) exibirem o valor "Sim".
  7. No menu Ferramentas , aponte para macro e, em seguida, clique em macros . Selecione TestDelete e, em seguida, clique em Executar .

    Observe que as três células (A9, A10, A11) exibirem o erro # valor! Erro valor. Observe também que a caixa de mensagem na sub-rotina TestDelete não é exibida.
  8. Pressione CTRL + as teclas ALT+F9.
As três fórmulas são recalculadas corretamente.

Se você usar a função MyFunction na seção "Solução", as fórmulas não retornam um erro de # Value! valor de erro quando você executar a sub-rotina TestDelete e a caixa de mensagem no TestDelete é exibida corretamente. No entanto, você ainda deve pressionar CTRL + as teclas ALT+F9 para forçar as fórmulas para exibir o valor correto, que é "yes".

Propriedades

ID do Artigo: 244466 - Última Revisão: 12/05/2015 16:22:07 - Revisão: 1.5

Microsoft Excel 97 Standard Edition

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbfix kbqfe KB244466 KbMtpt
Comentários