Visual Basic for Applications.docx

57
Visual Basic for Applications - VBA Parte I - Fundamentos Introdução Declaração de variáveis Tipos de dados Constantes Denominação de variáveis e constantes Operador de atribuição Operadores aritméticos Operadores relacionais Operadores lógicos Precedência dos operadores Exercícios Funções de entrada e saída Comentários Codificação de procedimentos Exercícios Ponto de acesso Introdução A versão Visual Basic para Aplicativos é um ambiente completo de desenvolvimento, consistente com a versão de plataforma única do Visual Basic e compartilhada por todos os aplicativos do Microsoft Office. O Visual Basic interpreta um conjunto especial de comandos denominado biblioteca de objetos do Excel. O Visual Basic que vem com o Excel não é a única linguagem que poderá comunicar-se com a biblioteca de objetos. Qualquer linguagem que ofereça suporte à automação poderá controlar o Excel. Alguns componentes essenciais da linguagem VBA para Excel são, a seguir, destacados e conceituados: Objetos Um objeto é um tipo especial de variável que contêm dados e códigos e representa um elemento específico no Excel. O Visual Basic suporta um conjunto de objetos que correspondem diretamente aos elementos do Microsoft Excel. Por exemplo, o objeto Workbook representa uma pasta de trabalho, o objeto Worksheet representa uma planilha e o objeto Range representa um intervalo de células. Uma pasta de trabalho, no Microsoft Excel, corresponde a um arquivo que pode conter diversas planilhas e folhas de gráficos ou planilhas de gráficos. Propriedades e métodos Para realizar uma tarefa o Visual Basic retorna um objeto que representa o elemento apropriado do Excel e depois o manipula usando as propriedades e métodos daquele objeto. As propriedades são características ou atributos de um objeto e os métodos são ações que os objetos podem executar. Módulos O código dentro de um módulo é organizado em procedimentos. Um módulo é um conjunto de procedimentos que realiza tarefas específicas.

Transcript of Visual Basic for Applications.docx

Page 1: Visual Basic for Applications.docx

V i s u a l B a s i c f o r A p p l i c a t i o n s - V B A  

Parte I - Fundamentos

Introdução Declaração de variáveis Tipos de dados Constantes Denominação de variáveis e 

constantes Operador de atribuição Operadores aritméticos Operadores relacionais

Operadores lógicos Precedência dos operadores Exercícios Funções de entrada e saída Comentários Codificação de procedimentos Exercícios Ponto de acesso

Introdução

A versão Visual Basic para Aplicativos é um ambiente completo de desenvolvimento, consistente com a versão de plataforma única do Visual Basic e compartilhada por todos os aplicativos do Microsoft Office. O Visual Basic interpreta um conjunto especial de comandos denominado biblioteca de objetos do Excel. O Visual Basic que vem com o Excel não é a única linguagem que poderá comunicar-se com a biblioteca de   objetos.   Qualquer   linguagem   que   ofereça   suporte   à   automação   poderá   controlar   o   Excel.Alguns componentes essenciais da linguagem VBA para Excel são, a seguir, destacados e conceituados:

Objetos

Um objeto é um tipo especial  de variável  que contêm dados e códigos e  representa um elemento específico no Excel.  O Visual Basic suporta um conjunto de objetos que correspondem diretamente aos elementos do Microsoft Excel.Por exemplo, o objeto Workbook representa uma pasta de trabalho, o objeto Worksheet representa uma planilha e o objeto Range representa um intervalo de células.Uma pasta de trabalho,   no  Microsoft  Excel,   corresponde   a   um arquivo  que   pode   conter  diversas planilhas e folhas de gráficos ou planilhas de gráficos.Propriedades e métodosPara realizar uma tarefa o Visual Basic retorna um objeto que representa o elemento apropriado do Excel e depois o manipula usando as propriedades e métodos daquele objeto.As propriedades são características ou atributos de um objeto e os métodos são ações que os objetos podem executar.

Módulos

O código  dentro  de  um  módulo  é  organizado  em procedimentos.  Um módulo  é  um  conjunto  de procedimentos que realiza tarefas específicas.Por  exemplo,   procedimentos  que  executam várias   tarefas   contábeis  podem ser   agrupados  em um módulo.

Editor do Visual Basic (VBE)

O VBE  é   a   interface  de  desenvolvimento  do  VBA  e  pode   ser   acessado  a  partir  da  planilha   Excel, pressionando as teclas Alt+F11.  O VBE abre a janela Código para escrever e editar códigos do Visual Basic e, por padrão, abre, também, a janela do Projeto (VBAProject), encaixada à janela Código, que contém os elementos do projeto como módulos, formulários e classes.

Page 2: Visual Basic for Applications.docx

Procedimentos

Um   procedimento   é   uma   unidade   de   código   localizada   entre   instruções Sub e End Sub ou   entre instruções Function e End Function que realiza uma tarefa.Um procedimento desempenha uma tarefa específica.  Um procedimento Function pode retornar valor, ao passo que um procedimento Sub não retorna valor.Para   uma   visão   geral   da   estrutura   de   um   procedimento Sub, segue   um   exemplo   com   breves comentários que explicam cada linha:

 Declaração de variáveis

Uma variável é uma área na memória, referenciada por um identificador, onde pode ser armazenado um valor e alterado a qualquer momento.Um nome de identificador deve começar por uma letra, ser único dentro do mesmo nível de escopo, não pode conter um espaço entre caracteres do nome e nem pode ser igual a uma palavra reservada da linguagem ou que pertence a sintaxe da linguagem. Não é permitido o uso de caracteres especiais, exceto de alguns símbolos (_, $, %, #, @, &, !) quando utilizados como último caractere do nome. O símbolo sublinhado (_) também pode ser usado entre palavras do nome da variável.Uma variável pode ser declarada, usando as seguintes palavras-chave para definir seu escopo ou local (procedimento ou módulo) onde ela poder ser acessada ou manipulada:

Dim ou Static(no procedimento)Dim ou Private(no módulo)Public(no módulo)

Dim – O valor da variável é retido apenas enquanto o procedimento no qual ela foi declarada estiver em execução.Static –   a   variável   preserva   o   valor   entre   as   chamadas   ao   procedimento.Private –   o   valor  fica  disponível   a   todos  os   procedimentos  dentro  do  módulo  onde  a   variável   foi declarada.Public – a variável pode ser acessada pelos procedimentos de vários módulos de uma pasta de trabalho.A variável pode ser declarada de modo implícito pelo VBA no momento em que ela for referenciada numa   instrução.   No   entanto,   o   programa   poderá   tornar-se  mais   eficiente   se   as   variáveis   forem 

Page 3: Visual Basic for Applications.docx

declaradas   de  modo   explícito   pelo   usuário.   A   declaração   explícita   de   todas   as   variáveis   reduz   a incidência   de   erros   de   conflitos   de   nomenclatura   e   de   digitação.Para impedir que o VBA faça declarações implícitas, deve-se inserir a instrução Option explicit em um módulo antes de todos os procedimentos.Palavras reservadas (Termos   que   são   de   uso   da   linguagem   VBA) as, byref, byval, case, close, const, date, declare, dim, each, else, empty, false, for, friend, function, get, input,   if,   is,   len,  let,   lock,  next,  new, nothing, on,  open, option, print,  public,  private,  resume, seek, select, set, static, string, sub, then, to, true, type, variant, with, while, write.  

Tipos de dados

O tipo de uma variável determina a quantidade de memória que ela ocupará, em bytes, e o modo de armazenamento.  O VBA opera com os seguintes tipos básicos:

Nome Tamanho IntervaloInteger 2 bytes   -32768 a 32767Long 4 bytes -2.147.483.648 a 2.147.483.467Single 4 bytes -3,4 x 1038 a 3,4 x 1038Double 8 bytes 1,7 x 10308 a 1,7 x 10308Currency 8 bytes -9223372036854,5808 a 9223372036854,5807String 1 byte por caractere 0 a aproximadamente 65.500Boolean 2 bytes Verdadeiro ou FalsoDate 8 bytes 01/01/100 a 31/12/9999Object 4 bytes Qualquer referência a objetoVariant 16 bytes + 1 byte para cada caractere Válido para qualquer tipo de dados.

Uma variável que conterá número inteiro pode ser declarada como Integer ou Long. Exemplos: 

Dim contador As Integer

Private tamMemoria As Long

Uma variável que conterá números fracionários, pode ser declarada com o tipo de dado Single, Double ou Currency. Exemplos:

 Public lado1 As Single

Private área As Double

Dim custoProd As Currency

Uma variável que conterá um conjunto de caracteres alfanuméricos pode ser declarada com o tipo de dados String. Exemplos:

 Dim descrProd As String

Dim nomeFunc As String

Uma variável que contém valor lógico (verdadeiro ou falso) pode ser declarada com o tipo de dados Boolean.  O valor padrão é False. Exemplo:

 Dim limExcedido As Boolean

Uma variável que contém valores de data e hora deve ser declarada com o tipo de dados Date. Exemplo:

 

Page 4: Visual Basic for Applications.docx

Dim data As Date

Uma variável que contém uma referência a um objeto do MS Excel pode ser declarada com tipo de dados Object.  Para atribuir um objeto a uma variável-objeto, deve-se usar a instrução Set. Exemplos:

 Dim plan1 As object

 Set plan1 = Worksheets(1)

Uma variável Variant permite o armazenamento de qualquer tipo de dado. Exemplo: 

Dim codMarca 'Variant por padrão

Constantes

Uma variável   declarada  por  meio  do  qualificador const significa  que   seu   conteúdo  não  poderá   ser alterado em todo programa. 

A constante deve ser inicializada, isto é, no momento de sua declaração deverá ser atribuído um valor a ela. Exemplos:

Const pi = 3.1416

Const pi2 = pi * 2

Pode ser especificado o escopo de uma constante, como segue:Private Const Pi = 3.14159Fica disponível a todos os procedimentos dentro de um dado módulo.  Deve ser declarada a nível de módulo.Public Const max = 1024Permanece disponível a todos os módulos.  Deve ser declarada a nível de módulo.Const idade = 29Disponível apenas dentro do procedimento onde foi declarada. 

Denominação de variáveis e constantes

Recomenda-se  para  a  declaração  de  variáveis  a  utilização  de   letras  minúsculas.  Caso  o  nome seja composto de mais de uma palavra, as demais devem ser iniciadas com letras maiúsculas ou colocar o símbolo sublinhado entre elas. Exemplos:  total  contador  ValorMedio  segunda_fase  soma_valor_real  contaLinhaRel2

Dica: Utilize nomes significativos na denominação de variáveis. Dê um nome que represente o mais precisamente possível o propósito desta variável.  Evite nomes sem significado ou abreviaturas não usuais.

Operador de atribuição

O operador de atribuição é representado por = (sinal de igualdade). Atribui à variável a expressão à direita do sinal de igualdade.

DeclaraçãoAtribuição

 dim resto as integer resto = 120 – 49

Page 5: Visual Basic for Applications.docx

 dim salario as double salario = 510.00 dim cidade as string cidade = 'Blumenau'

Após a execução dos comandos de atribuição, o local da mémória RAM de endereço denominado resto passa a armazenar o valor 71, o local de endereço de nome salario, 510.00 e o de nome cidade, Blumenau. Operadores aritméticos

As variáveis e constantes numéricas podem ser utilizadas em cálculos matemáticos, utilizando funções matemáticas ou aplicando os operadores. A tabela, a seguir, apresenta as operações, os símbolos respectivos e as sintaxes dos operadores aritméticos:

Operação Operador SintaxeMultiplicação * r = n1 * n2

Divisão / r = n1 / n2Adição + r = n1 + n2

Subtração – r = n1 – n2Potenciação ^   r = b ^ e

Divisão (retorna o resto) Mod r = n1 Mod n2Divisão (retorna o quoc. inteiro) \ r = n1 \ n2

Funções matemáticas intrínsecas mais utilizadas:

Operação Exemplo ResultadoRaiz quadrada sqr(9.0) 3Parte inteira int(7.8) 7Valor absoluto abs(-5) 5

Número aleatório rnd(12) ?Seno sin(3.7) 0,53

Co-seno cos(4.1) 0,57Tangente tan(6.8) 0,56

Operadores relacionais

Operadores relacionais fazem comparações, ou seja, verificam a relação de magnitude e igualdade entre dois valores. Indicam a comparação a ser realizada por uma expressão lógica.São seis os operadores relacionais:

Operação Operador  Igual a =Maior que >Menor que <Diferente de <>Maior ou igual a >=Menor ou igual a

<=

Operadores lógicos

Utilizados em expressões lógicas compostas ou para inverter o estado lógico de uma condição. Retornam o valor verdadeiro ou falso.

Page 6: Visual Basic for Applications.docx

Expressão usual

Operação Operador

e Conjunção Andou Disjunção Ornão Negação not

Os operadores and e or são binários e o operador not é unário. Estes operadores avaliam os operandos como lógicos (0 ou 1), sendo o valor lógico 0 consideradofalso (false) e o valor lógico 1, verdadeiro (true). O VBA conta ainda com os operadores lógicoseqv (equivalência), imp (implicação) e xor (exclusão lógica) que aqui não serão estudados por serem de pouco uso. As tabela verdade, a seguir, expressa operações lógicas:

conjunção (and) disjunção (or) negação (not)V e V = V V ou V = V não V = FV e F = F V ou F = V não F = VF e V = F F ou V = VF e F = F F ou F = F

 V = verdadeiro; F = falso.  Precedência dos operadoresA precedência é o critério que especifica a ordem de avaliação dos operadores de uma expressão qualquer. O VBA prioriza as operações de acordo com a ordem das categorias listadas abaixo. Os operadores entre parênteses possuem a mesma prioridade e são executados na ordem em que são escritos na instrução da esquerda para direita:Categorias e operadores: 1. Aritméticos: ^ , (*, /), (+, -)  2. Relacionais (avaliados da esquerda para a direita na ordem em que aparecem) 3. Lógicos: not, and e or (Parênteses podem ser utilizados para determinar uma forma específica de avaliação de uma expressão.) 

Exercícios a = (2 + 1) * 6 b = 20 / (-2) / 5 c = (5 + 1) / 2 * 3 d = 2 + 6 / 4 * 8 e = 18 – 11 mod 3           

f = 5 < 8 and 2 > 4g = 6 > 2 or 10 = 12h = not 12 > 30 i = 5 < 8 and 2 > 4 j = 8 <> 18 or 12 > 4 * 5           

x=0: y=1: z=2 k = x > y and y < xl = x > z or z >= ym = x < y and not y = yn = false and z > yo = y = x + 1 or y + 3 > 4 

dim ano as integer: ano=2012 (Verifica se o ano 2012 é bissexto)u = (ano Mod 4)= 0 And (ano Mod 100) > 0 Or (ano Mod 400) = 0 

Funções de entrada e saídaPermitem obter dados do ambiente exterior para a memória do computador e fornecer dados do computador ao mundo exterior. Função InputBox (caixa de entrada)Apresenta uma caixa de diálogo para que o usuário possa introduzir o dado de entrada. Ela exibe um aviso em uma caixa de diálogo, aguarda até que o usuário insira um texto ou clique em um botão para retornar o conteúdo da caixa de diálogo.

Page 7: Visual Basic for Applications.docx

Sintaxe: InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) onde, prompt argumento obrigatório e representa a mensagem que será exibida   na caixa de diálogo; title opcional; texto a ser exibido na barra de título da caixa de diálogo; default opcional; dado padrão de entrada a ser exibido na caixa de texto; xpos e ypos opcionais; especificam as coordenadas para posicionamento da  caixa de diálogo na tela; helpfile e context opcionais; identifica o arquivo de ajuda do usuário e o   número de  contexto atribuído ao tópico da ajuda.Função MsgBox (caixa de saída)Mostra uma caixa de diálogo contendo o botão OK e o valor do dado de saída.Sintaxe: MsgBox(prompt[, buttons] [, title] [, helpfile, context]) onde, prompt argumento obrigatório; mensagem que será exibida na caixa de  diálogo; buttons opcional; especifica o tipo de botão a ser exibido na caixa de  diálogo; title opcional; texto a ser exibido na barra de título da caixa de diálogo; helpfile e context opcionais; identifica o arquivo de ajuda do usuário e o número de  contexto atribuído ao tópico da ajuda.As palavras destacadas em itálico são os argumentos nomeados da função. Os argumentoscolocados entre colchetes são opcionais. Os argumentos das funções podem ser especificados pela posição e seguem a ordem apresentada na sintaxe sparados por uma vírgula. Para omitir alguns argumentos posicionais, deve-se incluir o delimitador de vírgula correspondente. Para especificar um argumento pelo nome, utilizar o nome do argumento seguido por dois-pontos e um sinal de igualdade (:=) e o valor do argumento. Pode-se especificar os argumentos nomeados em qualquer ordem. Exemplo: Title:="caixa de nomes", Prompt:="Seu nome é " & nomeExemplo das funções InputBox e MsgBox com argumentos posicionais:

A instrução Option Explicit força a declaração explícita de todas as variáveis do módulo e deve aparecer antes de qualquer procedimento. O nome do comando Sub é dado pelo programador e segue as convenções de nomenclatura de variáveis. A primeira instrução do procedimento, denominado exemplo01, declara a variável nome de tipo string através da instrução Dim. A esta variável é atribuído o nome que será digitado pelo usuário na caixa de diálogo que é aberta pela função InputBox. A seguir, a função MsgBox mostrará o conteúdo da variável nome na caixa de mensagem.Na função InputBox, foram codificados o prompt "Qual é o seu nome" e o title, opcional, "Entrada de nomes". A função MsgBox exibe o argumento prompt "Seu nome é" e o title "Caixa de nomes", antecedido por uma vírgula, indicando a ausência do argumento buttons e a variável nome, escrita após o prompt, concatenada pelo símbolo ampersand ou e-comercial (&).Resultado da execução do código acima:

Page 8: Visual Basic for Applications.docx

   

Para separar em linhas o texto inserido no prompt pode-se fazê-lo através dos caracteres:Chr(13) de retorno de carro ouChr(10) de alimentação de linha ou, ainda, combinadosChr(13) & Chr(10).Exemplo de como a função Msgbox do procedimento acima poderia ser codificada para exibir o resultado em duas linhas:           MsgBox " Seu nome é " & chr(13) & nome, , "Caixa de nomes"Resultado:    

         ComentáriosSão utilizados com a finalidade de documentar o programa-fonte. Eles não são tratados pelo compilador. Um apóstrofo (') introduz comentários no código.Exemplo:    ' Isto é um comentário.

Codificação de procedimentosAmbiente de programação VBA O Editor do Visual Basic Applications é integrado ao Excel e, assim, ao adquirir o Microsoft Excel está-se adquirindo também o VBA.Para abrir o editor, a partir do Microsoft Excel clique em Exibir Macros e na caixa de diálogo Macros dê um nome para a Macro ou Procedimento e, em seguida, clique no botão Criar para abrir o editor já com um módulo na janela Código e com as instruções Sub e End Sub. O editor VBA também pode ser ativado a partir do Microsoft Excel pressionado-se as teclas Alt+F11.Considerar que para executar uma macro ou procedimento é necessário que o curso de execução de macros no Excel esteja habilitado.Digite a codificação mostrada abaixo, compile e execute o programa e, em seguida, examine atentamente seu conteúdo e resultado.Enunciado do problema a codificar Calcular e imprimir a média aritmética de três notas de provas de um aluno a serem fornecidas pelo usuário através do teclado. Implementação em VBA

Page 9: Visual Basic for Applications.docx

Para compilar e executar o programa, basta pressionar a tecla F5 ou clicar no botão verde com formato de cabeça de seta à direita (Executar Sub/UserForm) na Barra de ferramentas ou a partir do menu Executar. Para ocorrer uma execução direta de um procedimento ao pressionar F5 ou o botão da Barra de ferramentas, o cursor do mouse deve estar posicionado em qualquer lugar entre as instruções Sub e End Sub do procedimento a ser executado.Segue-se um exemplo de codificação do mesmo problema no mesmo Módulo1 do projeto Pasta1, considerando como entrada das notas as células C1, C2 e C3 da planilha Excel Plan1 e como saídas as células A4 e C4 dessa mesma planilha. (A célula A4 conterá a expressão: Média aritmética e a C4, o valor da média).Para codificar novo procedimento no mesmo módulo, clique no menu Inserir da janela de código e em Procedimento. Na caixa de diálogo "Adicionar procedimento", digite o nome do procedimento calcMedia2, selecione o tipo Sub e o escopo Público. (Procedimento Sub sem especificação de escopo explícito é considerado Público por padrão).

Page 10: Visual Basic for Applications.docx

A proriedade Range pode ser substituída pela propriedade Cells apresentada no procedimento CalcMedia2 como comentário. O uso destas propriedades sem um qualificador de objeto representa as células da planilha ativa, ou seja, a planilha que se encontra aberta no Excel. Considerando como exemplo apenas a linha da variável nt1, equivale escrever: nt1 = ActiveSheet.Range("C1").Valueou nt1 = ActiveSheet.Cells(1, 3).Value. Para se referir a uma outra planilha que não a ativa deve ser usado o objeto Worksheets e entre parênteses o nome ou o índice da planilha requisitada. Exemplo: Worksheets("Plan3").Range("A1").Value = 3.14159.A propriedade Cells especifica a célula da planilha utilizando indices de linha e coluna ou estilo de referência L1C1, ao passo que a propriedade Range usa letras para identificar as colunas e números para as linhas.Antes de executar o procedimento CalcMedia2, certifique-se de ter preenchido as células C1, C2 e C3 da planilha com valores de notas e que essa planilha do Excel permaneça ativa. Seguem recortes de exemplos da planilha de dados mostrando as posições antes e depois da execução do procedimento CalcMedia2:Antes   Depois

Page 11: Visual Basic for Applications.docx

   

A seguir é apresentado outro modo de obter o mesmo resultado a partir da mesma fonte de dados, mostrada acima, e sem utilizar variáveis para auxiliar no processamento:

A média é apurada a partir das células da planilha, sem transferir seus valores para variáveis e o resultado da média é atribuído diretamente na célula da linha 4 coluna 3.Os procedimentos podem ser salvos a partir da planilha do Excel como se procede para o salvamento de qualquer planilha de uso habitual, podendo fechar a janela do editor VBA a qualquer momendo que nada é perdido enquanto a planilha correspondente estiver aberta. Se a janela do editor for fechada, para abri-la novamente basta teclar Alt+F11. Caso a codificação dos procedimentos não sejam exibidos, clique em Módulo1, no painel Projeto à esquerda, com o botão direito do mouse e, no menu de contexto, em Exibir código.

ExercíciosOs exercícios, a seguir, podem ser todos desenvolvidos no mesmo módulo e na mesma página de código do Microsoft Visual Basic e referirem-se quando necessário à mesma planilha do Excel:

1. Dados os comprimentos dos catetos de um triângulo retângulo, fazer um procedimento para determinar e imprimir o comprimento da hipotenusa. Utilizar a função InputBox e a MsgBoxpara entrada e saída de dados.(Fórmula do triângulo retângulo: a2 = b2 + c2. Para extrair a raiz quadrada de um número ou expressão numérica pode ser utilizada a função Sqr).

2. Em certa disciplina a nota semestral do aluno é calculada com base em seu desempenho verificado através de três provas.  A primeira prova tem peso 3, a segunda, peso 4 e a terceira, peso 5.  Elaborar um procedimento para calcular e apresentar a média do semestre, tendo como entrada as notas referentes as três provas nas células A3, A4 e A5 de Plan1 e como saída a média do semestre exibida nas células A6 e B6 da mesma planilha. Apresentar os dados de saída em negrito e na cor vermelha.

3. Escrever um procedimento para efetuar o cálculo da quantidade de litros de combustível gastos em uma viagem e da distância percorrida, sabendo-se que o veículo faz 10 km/litro. O usuário informará a velocidade média na célula C3 e o tempo despendido na viagem nas células C4 (horas cheias) e C5 (minutos). Mostrar a quantidade de litros gastos e a distância percorrida na caixa de mensagem do Visual Basic (MsgBox).

4. Sabendo-se que o KWh custa R$ 0,40, elaborar um procedimento para obter a partir de uma caixa de entrada a quantidade de quilowatts consumida por uma residência e calcular e 

Page 12: Visual Basic for Applications.docx

escrever na planilha, na célula G4, o valor bruto a ser pago e, em G5, o valor líquido caso seja aproveitado um desconto de 15%. Na célula F4, escrever a expressão "Valor bruto" e na célula F5, "Valor líquido".

5. Elaborar um programa para calcular a diferença de preços de um determinado produto, comparando os preços de compra anterior e atual.  Obter os preços anterior e atual das células B11 e B12 e imprimir a diferença algébrica e percentual dos preços nas células B13 e B14, respectivamente.

6. Elaborar um programa para ler a idade de uma pessoa em numero de anos, meses e dias a partir da células B11, B12 e B13, respectivamente, calcular e imprimir essa idade em Meses, Dias, Horas e Minutos e apresentar o resultado através da função MsgBox.

Para apresentar a codificação dos exercícios acima considerou-se uma mesma planilha do Excel como base de dados. Ela contém exemplos de dados de entrada e resultados dos processos, quando for o caso, e pode ser vista ao se sobrepor o ponteiro do mouse na palavra Planilha que aparece na linha abaixo junto aos exercícios resolvidos, a qual, aliás, é a mesma apresentada na seção seguinte sem o objeto gráfico ou botão de acesso designado Idade.

Ponto de acessoUm procedimento ou uma macro pode ser executada a partir de vários meios como através de uma tecla de atalho, de um botão na barra de ferramentas ou de um objeto gráfico, entre outros.Pode-se executar um procedimento a partir do corpo da planilha Excel onde se encontram os dados de entrada ou onde será exibido o resultado.Para criar um botão ou ponto de acesso, clique em inserir e depois em Formas, selecione uma Forma e desenhe-a arrastando o ponteiro do mouse no corpo da planilha. Em seguida, clique com o botão direito do mouse na Forma ou ponto de acesso criado e, no menu de contexto, em Atribuir Macro.Na caixa de diálogo "Atribuir macro", selecione o nome da macro ou procedimento e clique em OK.A seguir, é apresentada a planilha dos exercícios com um exemplo de botão ou ponto de acesso referente ao procedimento exerc6_idade:

Page 13: Visual Basic for Applications.docx

Parte II - Estruturas de controleSumário:

Introdução Estruturas de seleção Seleção simples Seleção composta Seleção composta encadeada Seleção de múltipla escolha Estruturas de repetição

Repetição com teste no início Repetição com teste no final Repetição com variável de controle Repetição com objetos de coleção Saindo de loops e procedimentos Exercícios

IntroduçãoAs estruturas de controle determinam o curso de ações de um algoritmo ou programa. A lógica do procedimento flui através das instruções da esquerda para a direita e de cima para baixo.  As instruções de controle, ou seja, os comandos que controlam a tomada de decisões e as iterações podem alterar a ordem de execução das instruções.

Estruturas de seleção As instruções condicionais avaliam se uma condição é verdadeira ou falsa, e em seguida especificam uma ou mais instruções a serem executadas, dependendo do resultado dessa avaliação.Comandos de seleção:

if...then    /  if...then...else/elseif  /  select...case...else Seleção simples(If ... Then) — testa uma condição única e executa uma instrução ou um bloco de instruções.Sintaxe:    If condição Then 

 Instruções

End If

Exemplo:O procedimento abaixo obtem dois valores numéricos, efetua a soma e apresenta a mensagem "soma maior que dez", caso o resultado da adição seja maior que 10.  Sub Adição() 

Dim num1 As Integer, num2 As IntegerDim soma As Integernum1= InputBox("Informe o 1o. valor")num2 = InputBox("Informe o 2o. valor")soma = num1 + num2if (soma > 10) then

MsgBox "Soma maior que dez"end if 

  End Sub A instrução If do exemplo acima que contém mais de uma linha de código é conhecida como sintaxe de linha múltipla. O comando de linha única não usa a instrução End If. A instrução Ifdesse exemplo também poderia ter sido codificada assim:If (soma > 10) then MsgBox "Soma maior que dez"

Seleção composta(If … Then … Else) — testa uma condição única e executa um entre dois blocos de instruções.Sintaxe:    If condição Then 

Page 14: Visual Basic for Applications.docx

 Instruções

Else

 Instruções

End If

Exemplo:O procedimento a seguir efetua o cálculo da média aritmética das notas de três provas de uma aluno e avalia a situação quanto à aprovação.  Sub mediaProvas() 

Dim nt1 As single, nt2 As Single Dim nt3 As Single, media As Single nt1 = InputBox("Informe a 1a. nota") nt2 = InputBox("Informe a 2a. nota")nt3 = InputBox("Informe a 3a. nota")media = (nt1 + nt2 + nt3) / 3 if (media >= 6.0) then 

MsgBox "Aprovado"else 

MsgBox "Reprovado"end if 

  End Sub 

  

Seleção composta encadeada(If … Then … ElseIf) — testa mais de uma condição e executa um dos vários blocos de instruções.Sintaxe:    If condição Then 

 Instruções

ElseIf condição Then

 Instruções

 . . .

Else

 Instruções

End If

Page 15: Visual Basic for Applications.docx

Exemplo:O procedimento abaixo calcula e mostra o valor do bonus com base no cargo e salário do funcionário.  Sub mediaProvas() 

Dim cargo As IntegerDim salario As Currency, bonus As Currencysalario = InputBox("Informe o salario: ")cargo = InputBox("Informe o cargo: ")If cargo = 1 Then

bonus = salario * 0.15ElseIf cargo = 2 Then

bonus = salario * 0.10ElseIf cargo = 3 Then

bonus = salario * 0.08Else

bonus = 0End IfMsgBox "Cargo: " & cargo & " Bonus: " & bonus

  End Sub Nota: se cada instrução ElseIf testar a mesma expressão com valores diferentes é mais prático utilizar a seleção de múltipla escolha como no exemplo da próxima seção.  

Seleção de múltipla escolha(Select Case) — testa uma condição única e executa um dos vários blocos de instruções.Sintaxe:    Select Case var(1)

 

 Case expr(2): instruções

. . .

 Case Else: instruções

End Select

(1)var = variável(2)expr = expressão numérica ou de sequência de caracteres.Exemplo:O procedimento abaixo calcula e mostra o valor do bonus com base no cargo e salário do funcionário. (É o mesmo exemplo da seção anterior apenas este apresenta mais opções de cargo e salário.)  Sub bonus()

Dim cargo As IntegerDim salario As Currency, bonus As Currencysalario = InputBox("Informe o salario: ")cargo = InputBox("Informe o cargo: ")Select Case cargo

Case 1: bonus = salario * 0.15Case 2: bonus = salario * 0.10Case 3: bonus = salario * 0.08Case 4, 5: bonus = salario * 0.05 Case 6 To 8: bonus = salario * 0.01

Page 16: Visual Basic for Applications.docx

Case Is < 12: bonus = salario * 0.005Case Else: bonus = 0

End SelectMsgBox ("Cargo: " & cargo & " Bonus: " & bonus)

  End SubA instrução Case pode avaliar valores separados por vírgula, sequências de valores - de até - e comparar com outros valores como aparece no exemplo a instrução Case Is.Nota: Para melhor legibilidade, vale a pena usar a estrutura Select Case em lugar da If ... Then ... ElseIf quando a instrução ElseIf avaliar a mesma expressão várias vezes.  

Estruturas de repetiçãoPermitem a execução de um grupo ou bloco de instruções repetidamente. As intruções podem ser repetidas até que uma condição seja falsa ou até que seja verdadeira.Também há loops que repetem instruções um número específico de vezes ou em cada objeto de uma coleção.Do...Loop — Faz um loop enquanto ou até que uma condição seja verdadeira (True).For...Next — Utiliza um contador para executar instruções um determinado número de vezes.For Each...Next — Repete um grupo de instruções para cada objeto em uma coleção.  

Repetição com teste no inícioDo While ... Loop — testa uma condição no início do loop e executa o loop enquanto a condição for verdadeira (True).Sintaxe:    Do While condição 

 Instruções

Loop

Exemplo:O procedimento abaixo multiplica dois valores fornecidos pelo usuário e apresenta o resultado, repetindo esse processamento por tantas vezes quantas o usuário desejar.  Sub multiplica()

Dim produto As Integer, resp As Integer Dim salario As Currency, bonus As Currencyresp = vbYes Do while (resp = vbYes)

valor1 = InputBox("1o. número")valor2 = InputBox("2o. número") produto = valor1 * valor2 MsgBox "Resultado: " & produto resp = MsgBox("Deseja continuar?", vbYesNo) 

Loop   End SubA função MsgBox, codificada em duas linhas neste procedimento, exibe na primeira o produto dos valores informados pelo usuário e na segunda mostra a mensagem "Deseja continuar?" e dois botões "Sim" e "Não". A execução só é encerrada quando o usuário pressionar o botão "Não".Do Until ... Loop — testa uma condição no início do loop e executa o loop enquanto a condição for falsa (False).Sintaxe:    Do Until condição

Page 17: Visual Basic for Applications.docx

 

 Instruções

Loop

Exemplo:O procedimento a seguir conta o número de vezes que ele é executado pelo o usuário.  Sub conta()

Dim soma As Integer resp = vbYes Do Until resp = vbNo

soma = soma + 1resp = MsgBox ("Deseja continuar?", vbYesNo)

LoopMsgBox "Total = " & soma

  End SubO procedimento apresenta a caixa de mensagem com a informação: Deseja continuar? e dois botões diferenciados pelos textos: "Sim" e "Não". O sistema adiciona uma unidade na variável soma e volta a exibir a caixa de mensagem até que o usuário clique no botão "Não", quando então a função após o comando Loop mostrará o conteúdo da variável soma.  

Repetição com teste no finalDo ... Loop While — testa uma condição no final do loop e continua a execução enquanto a condição for verdadeira (True).Sintaxe:    Do 

 Instruções

Loop While condição

Exemplo:O procedimento abaixo converte para o sistema binário um número decimal informado pelo usuário.  Sub converte()

Dim dec As Integer, bin As StringDim resto As Integer, sResto As Stringdec = InputBox("Informe um num.", , 19)Do

resto = dec Mod 2       ' retorna o resto da divisãosResto = CStr(resto)   ' converte o resto para o tipo stringbin = sResto + bin       ' concatena o resto com o conteúdo de bindec = dec \ 2               ' retorna o quociente inteiro da divisão

Loop While dec > 0MsgBox "Valor em binário: " & bin

  End SubO usuário informa um número decimal na caixa de entrada, caso não queira o valor default 19 sugerido e o sistema o converte para o binário correspondente. A execução do loop tem lugar enquanto a variável dec for maior que zero.Do ... Loop Until — testa uma condição no final do loop e continua a execução enquanto a condição for falsa (False).Sintaxe:   

Page 18: Visual Basic for Applications.docx

Do 

 Instruções

Loop Until condição

Exemplo:O procedimento abaixo calcula e mostra o fatorial de um número fornecido pelo usuário.  Sub fatorial()

Dim num As Integer, fat As Integer, i As Integernum = InputBox("Informe um num.", , 5)fat = 1: i = 1Do

fat = fat * ii = i + 1

Loop Until i > numMsgBox "Fatorial de " & num & ": " & fat

  End SubA execução prossegue até que a variável índice i for maior do que a variável num, conteúdo informado na caixa de entrada.  

Repetição com variável de controleFor ... Next — executa as instruções do loop enquanto a variável contadora não atingir o valor especificado.Sintaxe:    For var = inicial To final [Step passo] 

 Instruções

Next var

Exemplo:O procedimento abaixo efetua a soma dos números pares até 10.  Sub soma()

Dim total As Integer, j As IntegerFor j = 2 To 10 Step 2

total = total + jNext jMsgBox "O total é " & total

  End SubA variável j recebe o valor inicial 2 e a cada loop é incrementada de 2 unidades até atingir o valor final 10. O comando Step é opcional e se ele não for especificado é assumido o valor padrão 1.  

Repetição com objetos de coleçãoFor Each... Next — executa as instruções do loop para cada objeto de uma coleção.Sintaxe:    For Each var in grupo 

Page 19: Visual Basic for Applications.docx

 Instruções

Next var

Exemplo:O procedimento abaixo preenche com o valor 100 as células A1:D10 de Plan1 que apresentarem valor menor do que 1.  Sub preenche()

Dim intervalo As Range, c As RangeSet intervalo = Worksheets(1).Range("A1:D10")For Each c In intervalo

If c.Value < 1 Then       c.Value = 100End If

Next c  End SubAs variáveis intervalo e c são declaradas como objeto Range. A instrução Set atribui à variável intervalo referências do objeto Range da primeira planilha. O loop da instrução For Each escreve em cada elemento da coleção c que se refere ao intervalo de células A1:D10 o valor 100 se o conteúdo do elemento da coleção for menor que 1.  

Saindo de loops e preocedimentosAs intrução Exit permite abandonar uma estrutura de controle.  Apesar dessa instrução ser conveniente, deve-se restringir seu uso uma vez que o excesso de sua utilização pode dificultar a leitura e a depuração do código.Para sair diretamente de uma estrutura de repetição For, utiliza-se a instrução Exit For e para sair diretamente de um repetição Do usa-se a instrução Exit Do.As instruções Exit Sub e Exit Function podem ser usadas para abandonar procedimento e função.  

Exercícios1. Elaborar um procedimento para calcular e escrever a média ponderada de três notas de um 

aluno e a mensagem de aprovado para média maior ou igual a 6,0 ou, caso contrário, a mensagem de reprovado.

2. Dados os valores dos lados de um triângulo, verificar se os lados realmente formam um triângulo (o valor de cada lado deve ser menor que a soma dos outros dois lados). Se esta condição for verdadeira, indicar que tipo de triângulo: isósceles, escaleno ou eqüilátero.  Emitir uma mensagem, caso os valores dos lados fornecidos não formarem um triângulo.

3. Escrever um procedimento para calcular a soma dos N primeiros números naturais. (Soma = 0 + 1 + 2 + 3 + ... + N). O programa deve ler o valor de N, que equivale ao último número da série, através da função InputBox e apresentar o resultado em uma caixa de mensagem utilizando a função MsgBox.

4. Dado um conjunto de valores inteiros e positivos, como descritos na planilha abaixo, determinar qual o maior e menor valor do conjunto.  Encerrar a leitura ao encontrar o valor 0. O maior e menor valor do conjunto deve ser exibido em uma caixa de mensagem por meio da função MsgBox.

5. Em uma pesquisa realizada junto aos habitantes de uma região foram coletados os seguintes dados:  idade, sexo (M/F) e salário. Fazer um procedimento para calcular e informar:

o maior e menor idade do grupo;

Page 20: Visual Basic for Applications.docx

o média salarial do grupo;o percentual de homens.

Encerrar a leitura de dados da planilha ao detectar zero na idade.

6. Fazer um programa para escrever a tabuada de 1 a 10 do número fornecido pelo usuário, utilizando as estruturas de repetição For...Next e Do while...Loop. Utilize o método InputBoxpara retornar um número que será informado pelo usuário.  Mostrar o resultado de acordo com o exemplo contido na ilustração, utilizando a propriedade Cells do objeto Worksheets

(Fecha)  Exerc.1  Exerc.2  Exerc.3  Exerc.4  Exerc.5  Exerc.6  

Os exemplos dos exercícios acima foram desenvolvidos numa mesma planilha conforme ilustração abaixo. As informações na cor vermelha referem-se aos cabeçalhos e as informações em azul referem-se aos exemplos de dados para os procedimentos. Elas foram digitadas na planilha e, portanto, não são resultados dos procedimentos.

Parte III - Vetores e matrizesSumário:

Introdução Vetores Matrizes bidimensionais Matrizes fixas e dinâmicas Exercícios

 

Page 21: Visual Basic for Applications.docx

IntroduçãoVetores e matrizes são estruturas de dados homogêneas conhecidas como Arrays, matrizes, variáveis indexadas, variáveis subscritas ou tabelas em memória, são conjunto de elementosde mesma natureza. Cada elemento da matriz pode ser distinguido de outros elementos por um ou mais índices inteiros. As estruturas homogêneas ou arrays são divididas em  unidimensionais  e multidimensionais. Geralmente, as estruturas unidimensionais são chamadas de vetores e as multidimensionais são chamadas de matrizes. Um vetor também pode ser considerado uma matriz, variando apenas numa dimensão.  

Vetores O vetor ou matriz unidimensional é exatamente uma seqüência linear de elementos armazenados consecutivamente na memória. São variáveis do mesmo tipo declaradas com o mesmo identificador e referenciadas por um índice para determinar sua localização dentro da estrutura.Ilustração de um vetor:

domsegterquaquisexsab1234567

<-- diasSem (nome do vetor)<-- índice

Operações básicas:Declaração:  Dim diasSem (1 To 7) As stringInicialização:  diasSem(1) = "dom": diasSem(2) = "seg": ...Atribuição:  diasSem(4) = "qua"Escrita:  MsgBox diasSem(5)Exemplos de declaração de vetores:

1  Dim valor(10) As integer

2  Dim soma (1 To 15) As integer

3  Dim nome (10 To 30) As stringNo primeiro exemplo acima o índice da matriz vai de 0 a 10 – contém 11 elementos. O índice inicial de indexação de um vetor ou a matriz depende da definição da instrução Option Base, na seção de declaração do módulo. Se o comando Option Base 1 for especificado, todos os índices iniciam em 1, caso contrário, em 0. No segundo e terceiro exemplos os índices variam de 1 a 15 e de 10 a 30, respectivamente.

Page 22: Visual Basic for Applications.docx

Exemplo:O procedimento a seguir calcula a média aritmética das notas de uma classe com dez alunos, apresenta a média da turma e as notas que estão acima dessa média.

No primeiro loop For Next o sistema obtém as dez notas, armazena-as no vetor de nome notas e efetua a soma para no final calcular a média das notas. No loop For Next seguinte é relacionado na planilha apenas as notas de valor maior que a média apurada.O exemplo a seguir atribui um valor randômico para os elementos do vetor. O comandoDebug.Print envia a saída para a janela “verificação imediata” que pode ser aberta a partir do menu Exibir do programa editor Visual Basic:

  

Matrizes bidimensionaisNo Visual Basic, pode-se declarar matrizes com até 60 dimensões. A instrução a seguir declara uma matriz bidimensional de 3 por 5:

ou Dim matriz (1 To 3, 1 To 5) As Single 

Page 23: Visual Basic for Applications.docx

 

 Dim matriz (3, 5) As Single

No primeiro exemplo os índices da matriz iniciam em 1 e no segundo, em 0 se não for declarada no nível de módulo a opção Option Base 1. A primeira dimensão da matriz se refere à linha e a segunda, dimensão à coluna, no primeiro exemplo tem-se uma matriz de 3 linhas por 5 colunas e no segundo, 4 linhas por 6 colunas na ausência do comando Option Base 1.Para processar matrizes multidimensionais, utiliza-se instruções For...Next aninhadas. O procedimento, a seguir, preenche cada elemento da matriz bidimensional com base no valor de sua localização dentro da matriz: Sub exemplo3_matriz()

Dim i As Integer, j As IntegerDim matriz(3, 5) As Single

' Preenche a matriz com valores e os imprime na janela' de verificação imediata.

For i = 1 To 3For j = 1 To 5

matriz(i, j) = i * jDebug.Print matriz(i, j)

Next jDebug.Print    ' imprime branco ao completar uma linha.

Next i End Sub

Matrizes fixas e dinâmicasAs matrizes declaradas acima são exemplos de matrizes fixas. A matriz dinâmica é declarada deixando-se vazios os parênteses como no exemplo que segue:  Dim matDinamica ( ) As Integer Posteriormente, no procedimento, pode ser especificado o número de elementos através da instrução ReDim. Segue um exemplo de declaração e redimensionamento de uma matriz dinâmica: Sub redimatriz() 

Dim dinamica () As Integer' declara uma matriz dinâmica

Dim i As Integer' declara a variável i (índice)

ReDim dinamica (5)' faz a alocação de cinco elementos

For i = 1 To 5' faz o loop 5 vezes

dinamica (i) = i' inicializa a matriz

Next i  ' A próxima instrução redimensiona a matriz e apaga os elementos.

ReDim dinamica (10)' redimensiona para 10

For i = 1 To 10' faz o loop 10 vezes

dinamica (i) = i' inicializa a matriz

Next i 

Page 24: Visual Basic for Applications.docx

 ' A instrução a seguir redimensiona a matriz sem apagar os elementos.ReDim Preserve dinamica (15)

' redimensiona para 15 End Sub 

  

Exercícios1. Fazer um programa para obter dez números inteiros, armazená-los em um vetor e escrevê-los 

na ordem inversa de sua leitura.Para a entrada dos números utilizar a função InputBox e para a saída, a janela de verificação imediata, através do método Print do objeto Debug.

2. Fazer um procedimento para receber as notas da primeira e da segunda prova de cinco alunos. Armazenar as notas da primeira e da segunda prova em vetores distintos. Calcular e escrever a média de cada aluno na coluna A partir da linha 4 de Plan1.

3. Numa pesquisa realizada com um grupo de pessoas pretende-se relacionar as pessoas que têm altura acima da média das pessoas pesquisadas. Elaborar um procedimento para armazenar as alturas e os nomes das pessoas em vetores distintos e exibir a altura média  e os nomes das pessoas com altura maior do que a altura média. Obs.: Encerrar a entrada de dados ao ser digitado o valor 0 para a altura. Cada vetor pode ter no máximo 20 ocorrências.

4. Fazer um programa para pesquisar o número listado na coluna G da planilha e retornar o conteúdo correspondente da coluna H através da função MsgBox.  O usuário digitará o número desejado na caixa de entrada (InputBox). Caso o argumento não seja encontrado, informar esta condição numa caixa de mensagem.Criar um botão na planilha para executar o programa.

5. Efetuar a soma dos elementos situados abaixo da diagonal principal da matriz mostrada em Plan2, incluindo os elementos da própria diagonal principal. Mostrar o resultado numa caixa de mensagem. A matriz deve ser previamente construída na planilha de nome "Plan2".(Diagonal principal é formada pelos elementos A[ij], tais que i = j. Correspondem aos elementos da linha que une o canto superior esquerdo ao canto inferior direito).

6. Gerar uma matriz identidade de ordem 5, apresentando o resultado em "Plan2", conforme planilha abaixo. Ajustar a largura das colunas através da aplicação do método AutoFit.(Matriz identidade é uma matriz quadrada em que todos os elementos da diagonal principal são iguais a 1 e os demais são nulos ou iguais a 0).

(Fecha)  Exerc.1  Exerc.2  Exerc.3  Exerc.4  Exerc.5  Exerc.6  

Os exemplos dos exercícios acima foram desenvolvidos numa mesma pasta de planilhas conforme ilustração abaixo. As informações na cor vermelha referem-se aos cabeçalhos e as informações em azul referem-se aos exemplos de dados para os procedimentos. Elas foram digitadas na planilha e, portanto, não são resultados dos procedimentos.Planilha Plan1:

Page 25: Visual Basic for Applications.docx

Planilha Plan2:

Parte IV - Formulários (UserForm)Sumário:

Introdução

Page 26: Visual Basic for Applications.docx

Projeto Editor do Visual Basic – VBE Formulário Título do formulário Caixa de texto Rótulo ou label Demais caixas de texto e rótulos Alinhamento Botões de comando Tabulação Códigos dos botões de comando Teste do projeto Botão X do formulário Macro início Botão de execução Exercícios

 

IntroduçãoUm formulário de usuário é uma caixa de diálogo personalizada que pode ser usada quando as caixas das funções MsgBox e InputBox não são suficientes. Os objetos em um formulário de usuário do Excel, como botões e caixas de texto, caixas de combinação e outros são chamados de controles. O formulário é usado principalmente como uma plataforma na qual são adicionados os controles necessários para sua funcionalidade.  ProjetoPara o aprendizado básico será criado um projeto exemplo bastante simples que tem como objetivo apenas efetuar o registro de entrada de peças para suprimentos de uma Loja de materiais elétricos numa planilha.Abra o aplicativo Excel e na planilha Plan1 digite o cabeçalho da aplicação como mostrado na figura 1 e salve a planilha na pasta de sua preferência com o nome Materiais:

Figura 1Editor do Visual Basic – VBEO VBE é a interface de desenvolvimento do VBA e pode ser acessado a partir da planilha Excel, pressionando as teclas Alt+F11. O VBE abre a janela Código para escrever e editar códigos do Visual Basic e, por padrão, abre, também, a janela do Projeto (VBAProject) que contém os elementos do projeto como módulos, formulários, classes e outros e podendo abrir, ainda, a Janela 'Propriedades' utilizada para alterar as propriedades ou características dos objetos. Essas janelas possuem a particularidade de serem encaixáveis à janela do Editor do Visual Basic.É conveniente dizer que a planilha ou o arquivo do Excel é tratado como pasta uma vez que o VBA considera cada planilha aberta um projeto, podendo encerrar formulários, módulos, gráficos, códigos e macros. Assim, para salvar um projeto, basta gravar a planilha inicialmente aberta no Excel.FormulárioNo Excel pressione as teclas Alt+F11 para abrir o Editor do Visual Basic – VBE. Para criar a caixa de diálogo personalizada, no Editor do Visual Basic, clique no menu Inserir e, em seguida, na opção UserForm. Surge na tela um formulário vazio e uma Caixa de ferramentas contendo os controles a serem utilizados para a elaboração do formulário, figura 2. Caso a Caixa de ferramentas não apareça automaticamente na tela ao inserir o UserForm, clique em Caixa de ferramentas no menu Inserir.

Page 27: Visual Basic for Applications.docx

Figura 2Título do formulárioClique no botão Janela 'Propriedades' na Barra de ferramentas Padrão ou pressione F4 para abrir a janela, Figura 3, a qual possibilita nomear e inicializar propriedades dos controles do objeto formulário.Para mudar o título do formulário, dê um clique na barra de nome do formulário UserForm1 para selecioná-lo, em seguida, um duplo clique na propriedade Caption e troque o valor desta propriedade para Entrada de peças e dê Enter. A barra de título do formulário mostrará a nova legenda.Caixa de TextoInicialmente, clique no formulário para exibir a Caixa de ferramentas, caso ela não esteja visível. Na Caixa de ferramentas, selecione o botão Caixa de texto e clique no formulário na posição superior do lado direito para criar a primeira caixa de texto de tamanho padrão deste projeto como mostrado na figura 4. 

Page 28: Visual Basic for Applications.docx

Figura 3Com a caixa de texto selecionada dê um duplo clique na propriedade (Name) da Janela 'Propriedades' e mude o valor para txtPeca e dê Enter. Clique em uma parte vazia do formulário para selecioná-lo e exibir a Caixa de ferramentas.Rótulo ou LabelPara descrever ou nomear a caixa de texto, clique no botão Rótulo na Caixa de ferramentas e depois clique no formulário à esquerda da caixa de texto, e em seguida, clique duas vezes na propriedade Caption e modifique o valor para Número da peça e tecle Enter.Se necessário, redimensione o rótulo, arrastando a alça de seleção para perfazer um tamanho apropriado.Clique em uma parte vazia do formulário para selecioná-lo e exibir a Caixa de ferramentas.

Demais caixas de Texto e rótulosProceda de maneira semelhante para as outras duas caixas de texto e para os rótulos correspondentes.Para a propriedade (Name) da caixa texto Descrição digite txtDescr e para a caixa de texto Quantidade,txtQuant. Na propriedade Caption dos rótulos digite os valoresDescrição e Quantidade como aparecem nas figuras ao lado.AlinhamentoPara fazer o alinhamento das caixas de texto, selelecione as três caixas, clicando ao lado na parte superior esquerda da primeira caixa de texto e arraste um retângulo até a parte inferior direita da última caixa de texto ou, se preferir, mantenha pressionada a tecla Ctrl e clique em cada uma das caixas de texto, figura 4.A partir do menu Formatar, clique em Alinhar e, em seguida, na opção Esquerdas. Para alinhar os rótulos, proceda de modo análogo ao das caixas de texto. A figura 5 mostra o resultado deste procedimento.Botões de comandoPara permitir a execução de ações, insira no formulário três botões de comando: um para dar entrada de dados, outro para apagar o conteúdo das caixas de texto do formulário e o terceiro para encerrar o processo de entrada de dados.Para criar o primeiro botão, clique no Botão de comandona Caixa de ferramentas e em seguida no formulário.

Figura 4

Page 29: Visual Basic for Applications.docx

Figura 5

Figura 6Com o botão selecionado, mude o valor da propriedade (Name) para btnEntra e da propriedadeCaption para Entra e tecle Enter.Redimencione o botão, clicando nele para selecioná-lo e, em seguida, arraste a alça do lado direito ou esquerdo do retângulo de seleção até alcançar um tamanho apropriado, Figura 6. Se for necessário, reposicione o botão no espaço do formulário, arrastando-o de um local para outro.Clique em uma parte vazia do formulário para exibir a Caixa de ferramentas. Proceda de forma semelhante para a criação dos dois botões restantes, alterando os valores das propriedades como segue: Botão Limpa – propriedade (Name) para btnLimpa e Caption para Limpa;Botão Fim – propriedade (Name) para btnFim e Caption para Fim. Redimensione também esses dois botões de modo a obter tamanhos proporcionais, figura 6.Selecione os três botões para alinhá-los a partir do menu Formatar.

Figura 7Salve a pasta de trabalho. Lembre-se que o salvamento do projeto pode ser feito em cada etapa subsequente do desenvolvimento do projeto.Pressione F5 ou clique no menu Executar e depois em Executar Sub/UseForm para ver o aspecto da caixa de texto no modo de execução. Clique nos botões para testar seu funcionamento e depois feche a janela do formulário para voltar ao modo de desenvolvimento.Tabulação

Page 30: Visual Basic for Applications.docx

Pressione repetidamente a tecla TAB e observe que a caixa de seleção se movimenta de controle para controle, mudando seu foco ou ponto sobre o qual recairá a ação do usuário. Tecle F5 para entrar em modo de execução e verifique a ordem de sequência do foco ao pressionar a tecla TAB.A ordem de tabulação é impotante para quem utiliza o teclado. Se a atual não for a ordem de tabulação lógica ela pode ser mudada. Clique no plano de fundo do formulário e a partir do menu Exibir clique na opçãoOrdem de tabulação. A caixa de diálogo, Figura 8, mostra nove controles cuja sequência pode ser alterada, simplesmente, selecionando o controle desejado e clicando no botão Mover para cima ou Mover para baixo para posicioná-lo corretamente.

Figura 8Códigos dos botões de comandoBotão Entra (btnEntra)Selecione o botão Entra e no menu Exibir escolha Código ou, se preferir um atalho, clique duas vezes no botão Entra. É aberta uma janela para inserir as instruções de funcionalidade. Segue o código do procedimento que adiciona registros das entradas de materiais na planilha:

Page 31: Visual Basic for Applications.docx

Figura 9Para retornar ao formulário, clique no menu Exibir e depois em Objeto ou, pegando um atalho, clique com o botão direito do mouse em UserForm1 no painel à esquerda e, no menu de contexto, escolha Exibir objeto.Botão Limpa (btnLimpa)Dê um duplo clique no botão Limpa para abrir a janela de código. Segue o código relativo a esse botão:

Figura 10Para retornar ao formulário, clique no menu Exibir e depois em Objeto ou através do atalho, clicando com o botão direito do mouse em UserForm1 e, em seguida, em Exibir objeto.Botão Fim (btnFim)Dê um duplo clique no botão Fim para abrir a janela de código. Segue o código relativo a esse botão:

Page 32: Visual Basic for Applications.docx

Figura 11Para retornar ao formulário, clique no menu Exibir e depois em Objeto ou faça-o via atalho.O fechamento do formulário também pode ser efetivado teclando Esc. Para tanto, selecione o botão Fim do formulário e na Janela 'Propriedades' mude o valor da propriedade Cancel paraTrue.Teste do projetoPara fazer o teste do projeto, pressione a tecla F5 ou clique no botão (com forma de cabeça de seta à direita) na barra de ferramentas padrão ou, ainda, se preferir, clique no menu Executar e depois em Executar Sub/Userform.Botão X do formulárioPara que o usuário não encerre o trabalho, usando o botão fechar (X) do formulário, clique emInserir e depois em Código ou use o atalho a partir do UserForm1, subordinado à pastaFormulários do painel à esquerda, e, no final da janela de Código, digite o procedimento conforme figura 12 a seguir:

Figura 12Macro inícioPara iniciar a execução do projeto a partir de um botão ou ponto de acesso contido na planilha de dados, clique no menu Inserir e depois em Módulo. Na área de código digite as instruções conforme figura 13.

Figura 13Botão de execuçãoPara facilitar o comando de execução pelo usuário, clique na Planilha do Excel e crie um botão ou ponto de acesso, conforme figura 14. Para tanto, clique em Inserir e depois em Formas, selecione uma Forma e desenhe-a arrastando o ponteiro do mouse no corpo da planilha. Em seguida, clique com o botão direito do mouse na Forma e, no menu de contexto, em Atribuir Macro. Na caixa de diálogo Atribuir macro, selecione o nome da macro inicioMat e clique em OK. Insira o texto na Forma, clicando com o botão direito do mouse na borda da forma e, no menu de contexto, clique em Editar Texto. Digite o texto Entrada de materiais e para sair do modo de edição, clique num espaço em branco da planilha.Salve o projeto. Para finalizar esse estudo, faça agora o teste final, iniciando o processo de execução a partir do botão Entrada de materiais.

Page 33: Visual Basic for Applications.docx

Figura 14Exercícios

1. Desenvolver um projeto para fazer uma relação de pagamentos, contendo o código do funcionário, sexo e salário, na planilha Plan1 do Excel (figura 15) e mostrar os totais dos salários listados.Para tanto, elabore um formulário para dar entrada dos dados (figura 16) e outro formulário para apresentar a soma dos salários (figura 17) quando o usuário pressionar o botão Fim.

  Figura 15

 Figura 16

Page 34: Visual Basic for Applications.docx

 Figura 17Segue um exemplo da execução deste projeto-exercício que mostra alguns dados de entrada (figura 18) e o resumo final do processamento contendo os totais dos salários no segundo formulário (figura 19).

Figura 18

Figura 19

Page 35: Visual Basic for Applications.docx

Download do arquivo do exercício n° 1:      2. Fazer um programa para converter para o sistema numérico decimal um número escrito em 

binário. Formulário deste exercício (figura 20):

Figura 20Segue um exemplo de execução deste exercício (figura 21):

Figura 21

Download do arquivo do exercício n° 2:      3. Criar um projeto para converter valores numéricos entre os sistemas decimal, binário e 

hexadecimal. O formulário para este projeto pode ser definido como segue (figura 22):

Page 36: Visual Basic for Applications.docx

Figura 22Exemplo de uma conversão efetuada através do projeto deste exercício(figura 23):

Figura 23

Download do arquivo do exercício n° 3:      Exercícios 1:

Page 37: Visual Basic for Applications.docx
Page 38: Visual Basic for Applications.docx
Page 39: Visual Basic for Applications.docx

Exercícios 2:

Page 40: Visual Basic for Applications.docx
Page 41: Visual Basic for Applications.docx
Page 42: Visual Basic for Applications.docx
Page 43: Visual Basic for Applications.docx
Page 44: Visual Basic for Applications.docx
Page 45: Visual Basic for Applications.docx
Page 46: Visual Basic for Applications.docx
Page 47: Visual Basic for Applications.docx
Page 48: Visual Basic for Applications.docx