Localizar em uma planilha, células com #N/DISP

Qual o código para ser usado em “Localizar” ou “Localizar e Substituir” para achar células com a informação #N/DISP.

Find: #N/A
[x] Formatted display
Search in: Values

imagen

Version: 7.3.7.2 (x64) / LibreOffice Community
Build ID: e114eadc50a9ff8d8c8a0567d6da8f454beeb84f
CPU threads: 4; OS: Windows 10.0 Build 19045; UI render: default; VCL: win
Locale: es-MX (es_ES); UI: en-US
Calc: CL

2 Likes

Detalhes :sweat_smile:!

Muito obrigado @LeroyG !

1 Like

Olá @LeroyG, OK.
Havia tentado com #N/DISP, e não funcionou, errei nas opções de busca.
Obrigado.

1 Like

Olha que estou com a interface em inglés. Devería testalo em português.
[EDITO]
imagen
LO 7.4.4.2.

1 Like

Infelizmente me parece que a ferramenta Localizar/Substituir não tem suporte para encontrar erro(s).
.
Isso é feito pela ferramenta Detetive, que não sei utilizar muito bem devido a nunca ter precisado.
.
De qualquer forma, pode ser feito por macro -
Ask_ProcurarErros.ods (14,2,KB)
.

Sub ProcuraErroEmFormula( Optional oSheet As Object)
Dim oCursor	As Object
Dim s				As String			'	var de trabalho com string
Dim i				As Long			'	var de trabalho índice coluna
Dim j				As Long			'	var de trabalho índice linha
	
	REM Otem a planilha ativa
	If isMissing( oSheet ) Then oSheet = ThisComponent.CurrentController.getActiveSheet()
	
	REM Cria um cursor na célula A1
	oCursor = oSheet.createCursor( oSheet.getCellByPosition(0, 0) )
	
	REM Move o cursor até final da área utilizada
	REM Argumento false evita que expanda pela seleção
	oCursor.goToEndOfUsedArea( false )
	
	REM Método getError() é suportado apenas em "sCellObj" (célula)
	For i = 0 To oCursor.RangeAddress.EndColumn
		For j = 0 To oCursor.RangeAddress.EndRow
			iError = oSheet.getCellByPosition( i, j ).getError()
			
			Dim tmp1, tmp2, sCell
			
			REM Valor retornado indica #N/DISP. Se encontrar, obtem localização na planilha
			If (iError = 32767 ) Then
				With oSheet.getCellByPosition( i, j )
					tmp1 = .ColumnDescriptions
					tmp2 = .RowDescriptions
				End With
				REM Função Right para obter formato mais amigável na mensagem
				sCell = Right(tmp1(0), 1) & Right(tmp2(0), 1)
				s = s & sCell & Chr$(10)
			End If
		Next j
	Next i
	MsgBox( "Resultado(s) não disponível(is) encontrado(s) na(s) célula(s):" & Chr$(10) & Chr$(10) & s, 0, "LISTA ERROS")

End Sub