24.08.2020 Views

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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

186 Parte III: Conceitos de Programação

Uma estrutura If-Then verifica o valor contido na variável Num. Se Num

for menor que 0, o procedimento exibe uma caixa de mensagem contendo

informações que os humanos podem, de fato, entender. O procedimento

termina com a declaração Exit Sub, assim o erro em tempo de execução

não tem a oportunidade de acontecer.

A macro ainda não é perfeita

Portanto, o procedimento modificado para EnterSquareRoot é perfeito,

certo? Não exatamente. Tente entrar com texto ao invés de um valor. Ou

clique o botão Cancelar na caixa de entrada. Essas duas ações geram um

erro (Tipos incompatíveis). Esse simples e pequeno procedimento ainda

precisa de mais código para lidar com os erros.

O código a seguir usa a função IsNumeric para garantir que Num contém

um valor numérico. Se o usuário não entrar com um número, o procedimento

exibe uma mensagem e depois é interrrompido. Observe ainda

que a variável Num agora é definida como uma Variant. Se ela fosse

definida como Double, o código geraria um erro não tratado se o usuário

tivesse entrado com um valor não numérico na caixa de entrada.

Sub EnterSquareRoot3()

Dim Num As Variant

‘ Tela para valor

Num = InputBox(“Insira um valor”)

‘ Certifique-se que Num seja um número

If Not IsNumeric(Num) Then

MsgBox “Você deve inserir um número.”

Exit Sub

End If

‘ Certifique-se que um número não é negativo

If Num < 0 Then

MsgBox “Você deve inserir um número positivo.”

Exit Sub

End If

‘ Insira a raiz quadrada

ActiveCell.Value = Sqr(Num)

End Sub

A macro já está perfeita?

Agora, este código está absolutamente perfeito, certo? Ainda não.

Experimente rodar o procedimento enquanto a planilha ativa é uma

planilha de gráfico. É, outro erro em tempo de execução, dessa vez é o

temido Número 91 (veja a Figura 12-3). Esse erro ocorre porque não há

célula ativa quando a planilha de gráfica está ativa, ou quando alguma

coisa que não uma faixa é selecionada.

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

Saved successfully!

Ooh no, something went wrong!