Escolar Documentos
Profissional Documentos
Cultura Documentos
18 Roteiro PDF
18 Roteiro PDF
Existe no Excel uma outra caixa de ferramentas semelhante à de formulários, vista nas
aulas anteriores. É a caixa de controles:
Por exemplo, você pode criar um botão de comando na sua planilha conforme a
primeira figura abaixo. Clicando com o botão direito do mouse sobre o botão de
comando e selecionando as propriedades do botão (segunda figura abaixo), você
chega a uma janela com as propriedades do botão.
Na janela de propriedades (primeira figura abaixo) você pode alterar várias
propriedades do botão, tais como cor de fundo, tamanho (largura e altura), posição,
etc. Particularmente importante, são as propriedades Caption (indica o texto que
aparece no botão) e Enabled (indica se o botão está habilitado ou não, i.e., se ele pode
ser clicado ou não).
Altere a propriedade Caption para aparecer o texto “teste” no botão. Depois, altere a
propriedade Enabled para False e veja o que acontece (depois volte-a para o estado
True).
Para cada controle da caixa de ferramentas de controles, há uma série de eventos que
podem estar associados. Por exemplo, para um botão há, dentre os eventos: clicar,
clicar duas vezes (double click), mouse down (apertar o botão do mouse sobre o botão
de controle), mouse up (soltar o botão do mouse), dentre outros. Cada um desses
eventos é, na verdade, uma sub-rotina que será executada quando o respectivo evento
sobre o botão ocorrer.
Para ter acesso ao código do botão, clique duas vezes sobre o botão que está na sua
planilha, e abrirá a já conhecida janela do VBA. Repare que você está na janela de
código da sua planilha (e não em um módulo separado), e já aparece uma sub-rotina
vazia (click).
Clicando na caixa de drop-down à direita, como mostra a figura abaixo, você verá
todas as opções de evento para esse botão. Cada uma delas, no momento, é uma sub-
rotina vazia. Cabe agora a você, programar no VBA o que você quer que cada uma
dessas sub-rotinas execute ao ocorrer o respectivo evento.
Por exemplo, para fazer com que o botão imprima a data e hora atual na célula A1 ao
clicar o botão, coloque o seguinte código na sub-rotina CommandButton1_Click():
Compile o código e clique no botão, para testar sua função. Lembre-se que o botão
deve estar habilitado (propriedade Enable) e você deve estar fora do “modo de
projeto” da caixa de ferramentas de controle (figura abaixo). O modo de projeto indica
se você está projetando o botão (i.e., definindo suas propriedades, etc) ou de fato
executando suas sub-rotinas.
Para exemplificar outros eventos do botão, crie uma sub-rotina para escrever seu
nome na célula B1 quando você abaixar o botão do mouse sobre o botão de comando.
Para isso, selecione o evento MouseDown e crie a seguinte sub-rotina (repare que a
primeira subrotina (de clicar o botão) continua no mesmo arquivo VBA. Teste seu
botão agora.
Vamos acrescentar mais: agora quero que a cor de fundo da célula B1 se torne
amarelo ao soltar o botão do mouse (evento MouseUp):
Repare que, antes de mandar pintar o fundo, fiz com que a célula B1 fosse
selecionada: Range(“B1”).Select. Agora teste seu botão, apertando o mouse e depois
soltando-o.
Observação: se você limpar a célula A1, verá que a data e hora atual não aparecem
mais. Isso porque você tem agora eventos para o MouseDown e MouseUp, passando
por cima do que seria o clique do botão. É assim que a coisa funciona: você tem um
certo número de eventos à disposição e vai escolher aquele(s) mais adequado(s), mas
nem sempre é possível usá-los todos, e nem faz sentido. Geralmente, no caso do
botão, o que importa é o clique ou duplo_clique.
B) Calculadora
Utilizando botões e funções, vamos criar uma calculadora numa nova planilha. A idéia
é criar 4 botões para as quatro operações básicas e, a partir dos valores lidos nas
células A1 e B1, realizar a respectiva operação e escrever o resultado em A5. Por
exemplo, com os valores da figura, ao clicarmos no botão (+), escreveria-se 9 na
célula A5, e assim por diante.
Range("A5") = X + Y
End Sub
Uma variação do código acima poderia ser obtida sem utilizar as variáveis X e Y,
somando os valores obtidos das células diretamente:
C) InputBox
Na aula passada vimos a MsgBox, que escreve uma mensagem. Agora, vamos utilizar
a InputBox, que permite que você digite um valor que fará parte do procedimento
VBA. O exercício é para refazer a calculadora acima, mas agora ao invés de se obter os
valores a partir das células A1 e B1, os obteremos por meio de InputBoxes.
Para completar sua nova calculadora, mude os códigos dos botões (-), (*) e (/) para
trabalharem com InputBoxes.
D) WorksheetFunction
Você pode usar as funções do Excel dentro do código do VBA. Para isso, basta usar
WorksheetFunction.<nome da função>. Por exemplo:
Crie uma função chamada MaxRegiao que recebe como argumentos um Range e
retorna o Maximo desse range. Para tal, digite o seguinte código.
a) Teste a função acima. Perceba que ela recebe um conjunto de células (=Range) e
quando você a insere numa célula, já aparece a janela pedindo que você marque o
conjunto de células em questão.
b) Crie uma outra função chamada MaxRegiao1 que recebe como argumentos um
Range e retorna: Max + 1, onde Max é o máximo da região definida (Range).
c) Crie uma outra função chamada DifMaxMin que recebe como argumento um Range
e retorna Max – Min, onde Max é o valor máximo do Range e Min é o valor mínimo
deste mesmo Range. Min também deve ser calculado como uma WorksheetFunction.
E) Conversor de moedas
Vamos agora criar uma pequena calculadora para converter moedas. Para isso, copie a
tabela de conversão a seguir para uma planilha vazia:
Inicialmente, você deve montar os conjuntos de botões de radio. Para que eles
funcionem como dois conjuntos independentes de botões, cada elemento dos grupos
de botões (grupo “De” e grupo “Para”), deve ter sua propriedade GroupName
distinguindo os grupos. I.e., os botões do grupo “De” deve ter um mesmo GroupName
e os do grupo “Para” deve ter outro GroupName. No exemplo abaixo, o botão
selecionado está no grupo chamado Sheet3_1.
Montado o esquema da figura, resta fazer o código. Aqui, trabalharemos pela primeira
vez com o conceito de variável global, que é um valor que pode ser acessado por
qualquer procedimento dentro de um mesmo grupo de procedimentos. Criaremos duas
variáveis globais: “De” e “Para”, para armazenarmos os tipos de moeda que se deseja
converter, o que também indica a linha e a coluna na tabela de conversão que
deveremos utilizar. Por exemplo, se selecionarmos “De US $”, a variável “De” assume
valor 1, se selecionarmos “De Yen” ela receberá valor 2, assim por diante.
Para atribuir esses valores às variáveis globais, é preciso atuar no evento Click de cada
um dos botões de radio. O trecho abaixo mostra como associar os botões “De” à
variável global De. Repare que no início do código as variáveis globais estão definas
fora dos procedimentos, de modo que elas podem ser acessadas por todos.
Na seqüência, você deve fazer o mesmo para os radio buttons do grupo Para,
alterando a variável Para.
End Sub
Observe que as variáveis “valor”, “taxa” e “resultado” são declaradas como Double
(número real). A variável “valor” é obtida via InputBox. A variável “taxa” é obtida com
a função Index, onde se usa as variáveis globais “De” e “Para” (a tabela de conversão
está nas células de B2 até F6 nesse caso). A variável “resultado”, por sua vez, é o
produto (valor * taxa), e é escrito na MsgBox.