24.08.2020 Views

Programando o Excel ® Vba Para Leigos - 2ª Ed 2013 NoDRM (1)

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capítulo 12: Técnicas de Tratamento de Erros 193

Neste caso, você pode querer simplesmente pular qualquer célula que

contenha um valor que não pode ser convertido a uma raiz quadrada.

Você pode criar todos os tipos de capacidades de verificação de erro,

usando estruturas If-Then, mas pode conceber uma solução melhor (e

mais simples), apenas ignorando os erros que acontecem.

A seguinte rotina consegue isso, usando a declaração On Error Resume Next:

Sub SelectionSqrt()

Dim cell As Range

If TypeName(Selection) <> “Range” Then Exit Sub

On Error Resume Next

For Each cell In Selection

cell.Value = Sqr(cell.Value)

Next cell

End Sub

Em geral, você pode usar uma declaração On Error Resume Next se

considerar os erros inconsequentes à sua tarefa.

Como identificar erros específicos

Os erros não são todos criados iguais. Alguns são sérios e outros nem

tanto. Embora você possa ignorar erros que considera sem consequência,

você deve lidar com outros erros, mais sérios. Em alguns casos, é

preciso identificar o erro específico que ocorreu.

Na ocorrência de um erro, o Excel armazena o número do erro em um

objeto Error, chamado Err. A propriedade Number desse objeto contém

o número do erro. Você recebe uma descrição do erro usando a função

VBA Error. Por exemplo, a seguinte declaração exibe o número do erro

e uma descrição:

MsgBox Err.Number & “: “ & Error(Err.Description)

A Figura 12-5, apresentada anteriormente, mostra um exemplo disso.

Porém, tenha em mente que as mensagens de erro do Excel nem

sempre são úteis — mas, você já sabe disso.

O procedimento a seguir demonstra como determinar qual erro aconteceu.

Nesse caso, você pode ignorar com segurança erros causados por

tentar obter a raiz quadrada de um número não positivo (isto é, o erro

5), ou erros causados por tentar obter a raiz quadrada de um valor não

numérico (erro 13). Por outro lado, você precisa informar ao usuário se

a planilha está protegida e a seleção contém uma ou mais células

bloqueadas (caso contrário, o usuário pode pensar que a macro funcionou,

quando na verdade não o fez). Esse evento causa o erro 1004.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!