Módulo 1a: Introdução ao Visual Basic for Applications (VBA) - Elementos básicos -
O Excel (revisões ou não?) Folha de cálculo baseada em células Usa um sistema de coordenadas (letra, número) Recalcula todas as células a cada alteração - Programação das células: - Fórmulas. - Funções. - Afectação individual ou em grupo Excel.xlsx
VBA = Visual Basic for Applications Programação por objectos para aplicações da Microsoft (excel, word, powerpoint, etc) (linguagem também utilizada nos "macros") - Recursos de programação: - Utilização das funções standard do Visual Basic - Utilização das funções específicas de cada aplicação
Configurações do excel 2013 para permitir execução de código/macros Por questões de segurança o excel vem pré-programado para não correr macros e código VBA. Para habilitar essa possibilidade deve-se proceder da seguinte forma: -> File -> Options -> Trust center -> Trust center settings -> Macro Settings: - Enable all macros - Trust access to the VBA project object model Os ficheiros devem ser gravados com o formato Excel Macro-Enabled Workbook (*.xlsm)
Configurações do excel 2013 para mostrar a tab Developer Por questões de segurança o excel vem pré-programado para não mostrar a tab Developer. Para mostrar a tab Developer : File ->Options-> Customize Ribbon. Em Customize the Ribbon e nos Main Tabs, seleccionar a check box Developer. Para mostrar o ambiente de desenvolvimento VBA: A partir da tab Developer. Clicar no ícone Visual Basic
- O ambiente VBA (configurável): toolbars e menus Explorador de Projecto Janela de código (code) ou Janela de interface gráfica de utilizador (GUI, form) Janela de Propriedades Janela "immediate": Execução imediata Janela "locals": Avaliação de variáveis Janela "watches": Avaliação de expressões
-Programação por objectos: Tipos de entidades: 1. Forms 1.1 Form window 1.2 Form code 2. Modules 2.1 Module code VBA1a.xlsm
-Estrutura da janela de código: Object box Declarations Procedures... Procedure box -Uma janela de código (Form Code ou Module Code) pode ter vários Procedimentos (Procedure) VBA1a.xlsm
-Tipos de procedimentos (Procedures): Sub (subrotina trecho de código) Insert->Procedure Function (função trecho de código com um resultado) Property (função específica para interacção com forms não usada por nós) VBA1b.xlsm
Âmbito das variáveis: -Privadas (Private) -Públicas (Public) - Variáveis não declaradas e utilizadas dentro de um procedimento são consideradas locais (só existem dentro desse procedimento) Não funcionaria - Variáveis declaradas como "Private", só mantêm o seu valor no interior do módulo/form onde foram declaradas. - Variáveis declaradas como "Public" mantêm o seu valor em todos os módulos/forms Funcionaria Funcionaria VBA1a.xlsm
Âmbito dos procedimentos: -Privados (Private) -Públicos (Public) - Procedimentos especificados como "Private" só podem ser chamados dentro do seu módulo/form. - Procedimentos especificados como "Public" podem ser chamados a partir de todos os módulos/forms do projecto. - Procedimentos não especificados são considerados "Public" e podem ser chamados a partir de todos os módulos/forms do projecto. VBA1a.xlsm
- Expressões: As expressões operam sobre variáveis numéricas escalares. São constituídas por: - Números (literais) - Variáveis - Constantes - Operadores - Funções
- Tipos de variáveis: Por defeito, uma variável é "variant (variáveis não declaradas são do tipo variant )
- Tipos de variáveis: Variáveis "user defined" 1º - Declaração de tipo ("type"): Type TipoFichaAluno ' Definir uma estrutura de dados Numero As Single Nome As String Licenciatura As String End Type Declaração e utilização das variáveis "user defined": 2º - Declaração de variável (usando o tipo): Private (ou Public) Aluno as TipoFichaAluno ' Nas declarações iniciais ou Dim Aluno As FichaAluno ' No interior de uma Sub 3º - Utilização da variável (no interior de uma Sub): Aluno.Numero = 39993 Aluno.Nome = "José Maria" Aluno.Licenciatura = "MIEMat" VBA1a.xlsm
- Regras para os Nomes das Variáveis - Nomes das variáveis começam sempre por uma letra -> podem seguir-se letras, números e underscores -> comprimento máximo: 63 caracteres. -> são case-sensitive (distinção entre maiúsculas e minúsculas) Exemplo de nome de variável: Caudal_litros_por_min
Variáveis - Escalares (dos diferentes tipos). Ex: Num_Alunos guarda um valor. - Arrays multidimensionais (dos diferentes tipos). Ex: Alunos(numero,ano) guarda vários valores. numero, ano são inteiros (índices) Constantes - Têm todas as propriedades e requisitos das variáveis. - São "variáveis" fixas. Não podem ser alteradas no decurso do programa. - Não podem ser arrays. VBA1a.xlsm
-Operadores aritméticos - +, adição - -, subtracção - *, multiplicação - /, divisão - \, divisão inteira - ^, potenciação - mod, resto de uma divisão Operadores -Operadores comparativos - =, igualdade - <>, desigualdade (diferença) - >, maior que - <, menor que - >=, maior ou igual que - <=, menor ou igual que -Operadores booleanos - not, negação - and, conjunção - or, disjunção - xor, disjunção exclusiva -Operadores de concatenação - &, une duas strings. Vê sempre as variáveis dadas como strings - +, une duas strings. No entanto, se as variáveis dadas são numéricas, faz a soma aritmética dos valores e não a união das strings
-Funções nativas do VBA Funções São várias dezenas de funções. Consultar o "excel help" a partir do editor VBA (tecla F1) -> Visual Basic for Applications Language Reference -> Functions.
Funções - Troca de informação entre o VBA e as folhas de excel (sheets) Caso "A": Acesso completo Caso "B": Acesso dentro do actual ficheiro de excel Caso "Z": Acesso a uma gama, dentro da actual folha, do actual ficheiro. Z é um array de 2x2. Caso "W" acesso a uma célula através das suas coordenadas num_lin e num_col. "C" é o produto de A por B. A foi lido da célula A1 da Sheet1 do ficheiro VBA2.xlsm B foi lido da célula(1,2), ou seja da célula B1 da sheet1 do workbook que está activo A linha seguinte coloca o resultado "C" na célula C1 da mesma folha. Depois faz-se a concatenação para uma string da expressão: A x B = C Finalmente apresenta-se uma caixa de mensagens com a string. VBA1b.xlsm
Funções -Acesso às funções do excel (para funções específicas que existam no excel, mas não no VBA) Síntaxe: WorksheetFunction.função(args) Exemplo: Sub FuncoesExcel() k = WorksheetFunction.ErfC(C / 10) frase = "erfc(" & C & "/10) = " & Format(k, "0.0##") MsgBox (frase) End Sub Assim, acede-se à função do excel erfc(x), que não está disponível no Visual Basic standard. VBA1b.xlsm
-Controlo de Fluxo (Instruções para controlo do comportamento do programa) GoTo <label> - manda a execução para a linha do <label>: GoTo aqui A = 1 ' não executa! B = 2 ' não executa! aqui: MsgBox ("Executou o GoTo!") If ElseIf Else - Execução condicional: If C = 3 Then MsgBox ("C=3") ElseIf D <> 1 Then MsgBox ("C<>3 and D<>1") Else MsgBox ("C<>3 and D=1") End If VBA1b.xlsm
-Controlo de Fluxo (Instruções para controlo do comportamento do programa) Select Case - Execução caso-a-caso: Select Case C Case 1 MsgBox ("C=1") Case 2 MsgBox ("C=2") Case 3 MsgBox ("C=3") Case Else MsgBox ("C<>1 and C<>2 and C<>3") End Select VBA1b.xlsm
-Controlo de Fluxo (Instruções para controlo do comportamento do programa) For Next (Step) - Ciclo com passo numérico: For i = 0 To 5.5 Step 1.1 MsgBox (i) Next i While Wend - Ciclo com Condição: While C = 3 C = 0 Wend VBA1b.xlsm
-Controlo de Fluxo (Instruções para controlo do comportamento do programa) Do-Loop Until - Ciclo executado até que uma variável mude Do While-Loop - Ciclo executado enquanto uma variável se mantiver Check = True: Counter = 0 ' Inicializa as variáveis. Do ' loop exterior do tipo Loop Do Until. Do While Counter < 20 ' loop interior Do While Loop. Counter = Counter + 1 ' Incrementa Counter. If Counter = 10 Then ' Verifica condição. Check = False ' Muda estado de Check. Exit Do ' Sai do loop interior. End If Loop Loop Until Check = False ' Sai do loop exterior. VBA1b.xlsm
-Activação de Procedimentos e Macros -Opção 1 Atalho de teclado No Editor de excel, tab View, secção Macros -> View Macros : Seleccionar a rotina a activar e clicar options. Seleccionar o Atalho de teclado VBA1b.xlsm
-Activação de Procedimentos e Macros -Opção 2 Activação por botão 1. Na Tab Developer activar Design Mode : 2. Clicar Insert ; ->Form Controls (mais simples de usar) ou 3. P. Ex., inserir um botão 4. Programar a rotina a activar 5. Renomear o botão (opcional) ->ActiveX Controls (mais flexíveis) 6. Desactivar o Design Mode VBA1b.xlsm
- Resolução da Ficha 1