Como identificar erro

Tenho uma planilha que está vinculada a outra (dados externos). Essa formula identifica como erro #REF!, o que já era esperado. Como faço para reconhecer, com uma macro (comando IF) para reconhecer que naquela célula há um erro de fórmula?
A célula é:
A fórmula é: =‘file:///C:/Users/amaral.santos/Desktop/Pedidos/2019/Maio/125.xls’#$‘Anexo 2’.V5
A resposta é: #REF!

Quero aplicar esse comando.
If ThisComponent.Sheets.getByName(“Movimento”).getCellByPosition(8,2).String = “#REF!” Then
Anexo = “’#$‘Anexo 1’”
End If
No Excel tem o comando IsError.

Ola @Amaral, creio que é mais fácil colocar na própria formula:

=ÉERRO('file:///C:/Users/amaral.santos/Desktop/Pedidos/2019/Maio/125.xls'#$'Anexo 2'.V5;"")

Da maneira acima se erro = branco ""

Ou colocar outra fórmula para executar.

Os códigos de erros aqui


ATENÇÂO:: Caso queira dar mais detalhes a sua pergunta, use Descrição da imagem na pergunta ou Descrição da imagem abaixo. Grato.

Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha Descrição da imagem a esquerda da resposta, para finalizar a pergunta.

Boa Tarde @Gilberto, eu quero utilizar um comando if (macro) pois são varias planilhas. É o mesmo projeto que já me ajudastes. Utilizar fórmulas não é uma boa ideia pois teria que apagar a cada pesquisa.

Mas já esta usando uma formula !!!, vai continuar uma só, porém mais completa.

Eu preciso apagar e reavaliar as informações com dados distinto, por esse motivo opto sempre por realizar macros. Se puderes me indicar um curso em algum na internet eu agradeço.

Boa tarde,


Teste a propriedade **Error** da célula. Ela retorna o número do erro; caso não exista, retorna 0:
Sub Main
   oDoc = ThisComponent
   oPlan = oDoc.Sheets.getByName("Movimento")
   oCel = oPlan.getCellByPosition( 8,2 )
   
   If oCel.Error <> 0 Then 'Qualquer erro'
     '...    Faça algum coisa'
   End If   
End Sub

Se preferir testar para o erro **#REF!** use o número 524 e substitua a linha:
  If oCel.Error = 524 Then 'Erro #REF!'

Atte,

1 Like

@Grafeno, Obrigado. O meu problema de não reconhecer o erro era por que eu tinha colocado o comando ThisComponent.EnableAutomaticCalculation(False)
código

ThisComponent.EnableAutomaticCalculation(True)
E o reconhecimento do erro, por ser em uma fórmula, estava nesse intervalo. Já corrigi e deu tudo certo.
Por acaso, saberia me informar como trabalhar com dois arquivos abertos para trocar informações.
https://ask.libreoffice.org/pt-br/answers/61591/revisions/
O exemplo acima e quase o que eu preciso, porém preciso tenho que retornar para o arquivoA e depois para o ArquivoB mais de uma vez. O processo utilizado pelo @ohallot fecha o arquivo assim que utilizado. Grato.

@Amaral, se o problema é que a rotina do Olivier fecha o arquivo, eu posso sugerir, sem olhar seu projeto, que vc mova as duas linhas oDocB.Store e oDocB.close(true) para um rotina separada e declare a variável oDocB como uma variável global. Com isso arquivo fica aberto enquanto vc retorna mais de uma vez. Concluída as operações, vc fecha o arquivo pela rotina separada.

Eu fiz isso. A pergunta como trocar de oDocB para oDocA, visto que o comando oDocB = StarDesktop.loadComponentFromURL (…) já foi ativado.