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.

Capítulo 14: Exemplos de Programação em VBA

219

Se experimentar este exemplo, você descobrirá que clicar o botão

Cancelar na InputBox apaga o valor atual na célula A1. Apagar os dados

do usuário não é uma prática muito boa de programação. A seguinte

macro demonstra uma abordagem melhor: usar uma variável (x) para

armazenar o valor fornecido pelo usuário. Se o valor não estiver vazio

(isto é, se o usuário não cancelou), o valor de x é colocado na célula A1.

Caso contrário, nada acontece.

Sub GetValue2()

Dim x as Variant

x = InputBox(“Entre o valor da célula A1”)

If x <> “ “ Then Range(“A1”).Value = x

End Sub

A variável x é definida como um tipo de dados Variant (variante), pois ela

poderia ser um número ou uma string vazia (se o usuário cancelar).

Determinando o tipo de seleção

Se você definir a sua macro com uma seleção de faixa, a macro deve ser

capaz de determinar se uma faixa está, de fato, selecionada. Se alguma

outra coisa que não uma faixa estiver selecionada (tal como um gráfico

ou uma figura), provavelmente a macro explodirá. O seguinte procedimento

usa a função TypeName para identificar o tipo de objeto que está

selecionado no momento:

Sub SelectionType()

MsgBox TypeName(Selection)

End Sub

Se um objeto Range estiver selecionado, a MsgBox exibe Range. Se a

sua macro só funcionar com faixas, você pode usar uma declaração If

para garantir que uma faixa seja selecionada. Este exemplo exibe uma

mensagem e promove a saída do procedimento se a seleção atual não

for um objeto Range:

Sub CheckSelection()

If TypeName(Selection) <> “Range” Then

MsgBox “Selecione uma faixa.”

Exit Sub

End If

‘ ... [Other statements go here]

End Sub

Identificando uma seleção múltipla

Como você sabe, o Excel permite múltiplas seleções, pressionando Ctrl

enquanto você escolhe objetos ou faixas. Isso pode causar problemas

com algumas macros. Por exemplo, você não pode copiar uma seleção

múltipla que consiste de células não adjacentes. Se tentar fazê-lo, o

Excel o repreende com a mensagem mostrada na Figura 14-3.

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

Saved successfully!

Ooh no, something went wrong!