Autor: Fernando de Carvalho Navarro Apresentação criada por Fernando de Carvalho Navarro ' Por Carlos Eduardo Guimarães ' Function CreateFileList(FileFilter As String, _ IncludeSubFolder As Boolean) As Variant ' returns the full filename for files matching ' the filter criteria in the current folder Dim FileList() As String, FileCount As Long CreateFileList = "" Erase FileList If FileFilter = "" Then FileFilter = "*.*" ' all files With Application.FileSearch.NewSearch.LookIn = CurDir.Filename = FileFilter.SearchSubFolders = IncludeSubFolder.FileType = msoFileTypeAllFiles If.Execute(SortBy:=msoSortByFileName, _ SortOrder:=msoSortOrderAscending) = 0 Then Exit Function Redim FileList(.FoundFiles.Count) For FileCount = 1 To.FoundFiles.Count FileList(FileCount) =.FoundFiles(FileCount) Next FileCount.FileType = msoFileTypeExcelWorkbooks ' reset filetypes End With CreateFileList = FileList Erase FileList End Function Sub TestCreateFileList() Dim FileNamesList As Variant, i As Integer 'ChDir "C:\My Documents" ' activate the desired startfolder for the filesearch FileNamesList = CreateFileList("*.*", False) ' performs the filesearch, includes any subfolders ' present the result Range("A:A").ClearContents For i = 1 To UBound(FileNamesList) Cells(i + 1, 1).Formula = FileNamesList(i) Next i End SubDezembro/2013 Excel 2007 VBA 6.3 Excel 2010 VBA 7.0 Excel 2013 VBA 7.1
Autor: Fernando de Carvalho Navarro Operadores e Variáveis Operadores Unidades Variáveis Constantes Expressões 2
Autor: Fernando de Carvalho Navarro Operadores Aritméticos e de Texto Soma: + Subtração: - Multiplicação: * Divisão: / Quociente (divisão inteira): \ Resto: Mod Exponenciação: ^ Concatenação de Texto: & 3
Autor: Fernando de Carvalho Navarro Operadores de Comparação Expressões sempre retornam True (Verdadeiro) ou False (Falso) Operadores de comparação: = (igual) > (maior que) < (menor que) >= (maior ou igual a) <= (menos ou igual a) <> (diferente de) Is (Usado para comparar duas variáveis de referência a objeto) Like (Usado para comparar duas sequências de caracteres) Exemplos de expressões: A > 0 Salário_Bruto >= 3500 Status <> "Reprovado" 4
Autor: Fernando de Carvalho Navarro Operadores Lógicos Expressões sempre retornam True (Verdadeiro) ou False (Falso) Operadores Lógicos: Not (Não): Executa uma negação lógica de uma expressão; And (E): Executa uma conjunção lógica em duas expressões; Or (Ou): Executa uma disjunção lógica em duas expressões; Xor (Ou exclusivo): Executa uma exclusão lógica em duas expressões. 5
Autor: Fernando de Carvalho Navarro Tabela da Verdade Expressão 1OperadorExpressão 2Resultado TrueAndTrue AndFalse AndTrueFalse AndFalse TrueOrTrue OrFalseTrue FalseOrTrue FalseOrFalse TrueXorTrueFalse TrueXorFalseTrue FalseXorTrue FalseXorFalse —NotTrueFalse —NotFalseTrue 6 True se todas forem True True se ao menos uma for True True se apenas uma for True
Autor: Fernando de Carvalho Navarro Exemplos de Expressões Lógicas Definições iniciais: A = 10, B = 20, C = 0 Exemplos: Not A > 0 A > 0 And B > 0 A = 0 Or B > 0 Or C = 0 A > 10 And B = 0 Or C = 0 A > 10 And (B = 0 Or C = 0) A > 0 Xor B = 0 A > 0 Xor B > 0 7 False True False True False
Autor: Fernando de Carvalho Navarro Tipos de Dados Números inteiros: Números decimais fracionários: Notação americana (ponto decimal), sem separador de milhar Texto: "Aprovado" "SP" "Produto 1" "Av. das Árvores nº 1000, cj. 92" Data e Hora: Delimitador # (muitas operações aceitam aspas duplas) #25/12/2012# #14:21:46# #17/feb/2014# #06/05/2013# #sep :25:37# 8
Autor: Fernando de Carvalho Navarro Tipos de Dados – Números Inteiros Byte (1 byte) Valores: 0 a 255 Integer (2 bytes) Valores: a Long (4 bytes) Valores: a LongLong (8 bytes, válido para plataformas de 64 bits) Valores: a
Autor: Fernando de Carvalho Navarro Tipos de Dados – Números Decimais Single (4 bytes) Valores negativos: –3, × a –1, × 10 –45 Valores positivos: 1, × 10 –45 a 3, × Double (8 bytes) Valores negativos: –1, × a –4, × 10 –324 Valores positivos: 4, × 10 –324 a 1, × Currency (8 bytes) Valores: – ,5808 a ,5807 Decimal (14 bytes) Valores inteiros: ± Valores decimais: ±7, com 28 casas decimais à direita Menor nº diferente de zero: ±0,
Autor: Fernando de Carvalho Navarro Tipos de Dados – Outros Tipos Boolean (2 bytes) Valores: TRUE ou FALSE Date (8 bytes) Valores: de 1 de janeiro de 100 a 31 de dezembro de 9999 String (10 bytes + comprimento variável da sequência) Valores: de 0 a aproximadamente 2 bilhões de caracteres String (comprimento fixo da sequência) Valores: de 1 a aproximadamente caracteres Object (4 bytes) Valores: qualquer referência a um objeto Variant (16 bytes para números) Valores: qualquer valor numérico até o intervalo de um Double Variant (22 bytes + comprimento da sequência de caracteres) Valores: O mesmo intervalo de String de comprimento variável 11
Autor: Fernando de Carvalho Navarro Variáveis São lugares da memória do computador onde são armazenados dados enquanto o programa está rodando e podem ter seu valor alterado. Regras de nomeação: Letras, números e alguns caracteres de pontuação, porém o primeiro caractere deve ser uma letra. Comprimento máximo de 255 caracteres. Não é permitido: espaço, ponto, vírgula, #, $, %, &,, =, ou !. É permitido o uso de letras acentuadas. Não são permitidos nomes que coincidam com palavras reservadas pelo VBA: End, Loop, Sub, Range, Sheet, Row, Selection, etc. O VBA não faz distinção entre letras maiúsculas e minúsculas. Portanto, os nomes Taxa, taxa ou TAXA referem-se à mesma variável. 12
Autor: Fernando de Carvalho Navarro Variáveis Atribuição de valor: Variável = valor Exemplos: SalárioBruto = Descontos = SalárioLíquido = SalárioBruto – Descontos Nome = "Fulano de Tal" DataValidade = #20/jul/2013# Variáveis contadoras (incremento fixo): i = i + 1 Linha = Linha + 2 Variáveis acumuladoras (incremento variável): Soma = Soma + ValorAtual 13
Autor: Fernando de Carvalho Navarro Declaração Explícita de Variáveis Instruções: Dim, Static, Private, Public Sintaxe: Dim variável As Tipo Exemplos: Dim Ano As Integer Dim i As Byte, j As Integer Dim População As Long Dim Taxa As Single, VendaLíq As Currency Dim x As Integer, y As Long, z As Double Dim Nome As String, Endereço As String Dim Código_Cliente As Integer, Estado As String*2, _ Cidade As String, Data_Admissão As Date Dim Entrega_Urgente As Boolean Dim Entrada 14
Autor: Fernando de Carvalho Navarro Escopo das Variáveis Módulo 1 Sub Proc1() Dim a, b, c... a = b + c... End Sub Sub Proc1() Dim a, b, c... a = b + c... End Sub Sub Proc2() Static x, y, z... x = 10 y = 20 z = y - x End Sub Sub Proc2() Static x, y, z... x = 10 y = 20 z = y - x End Sub Procedimento (Macro) Módulo 2 Dim i, j, k Private d1, d2, d3 Dim i, j, k Private d1, d2, d3 Sub Proc3() Dim a, b, c... a = 100 i = 1... End Sub Sub Proc3() Dim a, b, c... a = 100 i = 1... End Sub Sub Proc4() Static x, y, z... x = 0 j = i + d1 v1 = x + j... End Sub Sub Proc4() Static x, y, z... x = 0 j = i + d1 v1 = x + j... End Sub Privativo (Módulo) Módulo 3 Public v1, v2, v3 Sub Proc5() Dim a, b, c... a = b + c v2 = v End Sub Sub Proc5() Dim a, b, c... a = b + c v2 = v End Sub Sub Proc6() Static x, y, z... x = v1 + y z = v2 - y v3 = x + z End Sub Sub Proc6() Static x, y, z... x = v1 + y z = v2 - y v3 = x + z End Sub Público (Projeto) 15
Autor: Fernando de Carvalho Navarro Constantes São locais da memória onde são armazenados dados enquanto o programa está rodando e não podem ter seu valor alterado. Sintaxe para declaração e atribuição de valor: Const Constante As Tipo = Valor Exemplos: Const Pi As Single = Const Sigla As String = "SP" Const Feriado_Independência As Date = #1-sep-2014# Const Mens As String = "Olá", Valor As Double = Constantes predefinidas: Visual Basic: vbGreen, vbTrue, vbCrLf … Excel: xlLeft, xlRight, xlVisible, xlNone, xlPie … Quebra de linha dentro do texto: vbCrLf 16
Autor: Fernando de Carvalho Navarro Escopo das Constantes Módulo 1 Sub Proc1() Const a…... x = a... End Sub Sub Proc1() Const a…... x = a... End Sub Sub Proc2() Const b…... y = b... End Sub Sub Proc2() Const b…... y = b... End Sub Procedimento (Macro) Módulo 2 Private Const i… Sub Proc3() Const a…... x = a y = i... End Sub Sub Proc3() Const a…... x = a y = i... End Sub Sub Proc4() Const b…... x = 0 y = b z = x + i + v1... End Sub Sub Proc4() Const b…... x = 0 y = b z = x + i + v1... End Sub Privativo (Módulo) Módulo 3 Public Const v1… Sub Proc5() Const a…... x = a y = v1... End Sub Sub Proc5() Const a…... x = a y = v1... End Sub Sub Proc6() Const b... x = v1 + y z = b - y... End Sub Sub Proc6() Const b... x = v1 + y z = b - y... End Sub Público (Projeto) 17
Autor: Fernando de Carvalho Navarro Atribuição de Referência a um Objeto Sintaxe: Dim Variável_objeto As Tipo_de_objeto Set Variável_objeto = Objeto Exemplo: Sub Teste() ' Este procedimento usa um objeto repetidas vezes: ActiveCell.CurrentRegion.Offset(1, 0).Select ActiveCell.CurrentRegion.Offset(1, 0).Font.Bold = True ActiveCell.CurrentRegion.Offset(1, 0).Font.Name = "Arial" ActiveCell.CurrentRegion.Offset(1, 0).Font.Size = 12 ActiveCell.CurrentRegion.Offset(1, 0).Value = 0 End Sub 18
Autor: Fernando de Carvalho Navarro Atribuição de Referência a um Objeto (cont.) As instruções precisam estar na sequência. Exemplo sem atribuição de referência, usando a Estrutura With... End With : Sub Teste1() ' Este procedimento usa múltiplas ações sobre o objeto With ActiveCell.CurrentRegion.Offset(1, 0).Select.Font.Bold = True.Font.Name = "Arial".Font.Size = 12.Value = 0 End With End Sub 19
Autor: Fernando de Carvalho Navarro Atribuição de Referência a um Objeto (cont.) As instruções não precisam estar na sequência. Exemplo com atribuição de referência pelas instruções Dim e Set : Sub Teste2() ' Este procedimento usa atribuição de referência ao objeto Dim Área As Range Set Área = ActiveCell.CurrentRegion.Offset(1, 0) Área.Select Área.Font.Bold = True Área.Font.Name = "Arial" Área.Font.Size = 12 Área.Value = 0 End Sub 20
Autor: Fernando de Carvalho Navarro Múltiplas Ações Sobre um Mesmo Objeto (cont.) Exemplo com atribuição de referência e uso da Estrutura With... End With : Sub Teste3() ' Este procedimento usa múltiplas ações num objeto Dim Área As Range Set Área = ActiveCell.CurrentRegion.Offset(1, 0) With Área.Select.Font.Bold = True.Font.Name = "Arial".Font.Size = 12.Value = 0 End With End Sub 21