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.

192 Parte III: Conceitos de Programação

Lembre-se que a declaração Resume limpa a condição de erro antes de

continuar. Para ver o que quero dizer, experimente substituir a seguinte

declaração pela penúltima declaração do exemplo anterior:

If Ans = vbYes Then GoTo TryAgain

O código não funciona corretamente se você usar GoTo ao invés de

Resume. Para demonstrar, entre com um número negativo: você recebe

uma tela de erro. Clique Sim para tentar de novo e depois, entre com

um outro número negativo. Esse segundo erro não é capturado, pois a

condição original de erro não foi removida.

Este exemplo está disponível no site deste livro.

Lidando com erros resumidamente

Para ajudá-lo a manter claro esse negócio de lidar com erro, eu preparei

um resumo curto. Um bloco de código para lidar com erros tem as

seguintes características:

55

Ele começa logo depois do rótulo especificado na declaração

On Error.

55

Ele só deveria ser atingido pela sua macro se ocorrer um erro.

Isso significa que você deve usar uma declaração, tal como Exit

Sub ou ExitFunction, imediatamente antes do rótulo.

55

Ele pode exigir uma declaração Resume. Se você decidir não

abortar o procedimento quando ocorrer um erro, deve executar

uma declaração Resume antes de voltar ao código principal.

Como saber quando ignorar erros

Em alguns casos, está perfeitamente certo ignorar erros. É quando a declaração

On Error Resume Next entra em cena.

O seguinte exemplo faz uma loop através de cada célula na faixa

selecionada e converte o valor para a sua raiz quadrada. Este procedimento

gera uma mensagem de erro se qualquer célula na seleção

contiver um número negativo ou texto:

Sub SelectionSqrt()

Dim cell As Range

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

For Each cell In Selection

cell.Value = Sqr(cell.Value)

Next cell

End Sub

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

Saved successfully!

Ooh no, something went wrong!