Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 22
Visual Basic for Applications: # 1
Visual Basic for Applications
Introduo uma linguagem de programao baseada na conhecida linguagem BASIC Est concebida para funcionar em conjunto com diferentes aplicaes, de forma a potenciar a robustez das mesmas Enquadra-se nos ambientes de programao baseados no processamento de sequncia de eventos (event-driven programming) Histria Foi inicialmente integrada com o Excel 5 em 1994 e a partir da a sua expanso para outras aplicaes foi gradual Foi com a sada do Office 97 em 1997 que a Microsoft concretizou um dos seus grandes objectivos: ter um ambiente de programao completamente integrado entre os seus quatro famosos produtos: Word, Excel, Access e PowerPoint Actualmente, o VBA j por si s um produto independente, que outras companhias podem adoptar e incorporar nas suas aplicaes Visual Basic for Applications: # 2 Variveis I Declarao explcita de variveis Declarar uma varivel VAR: Dim VAR Declarar uma varivel VAR como sendo do tipo TYPE: Dim VAR As TYPE Declarao implcita de variveis Possibilidade de no declarar variveis Variveis no declaradas ou sem declarao de tipo tm por defeito o tipo Variant No permitir o uso de variveis implcitas: Option Explicit Visibilidade e longevidade de uma varivel Public: visvel em todos os mdulos e durante toda a execuo Private ou Dim: visvel dentro do seu mdulo e durante toda a execuo Dim: visvel dentro do seu procedimento e durante a sua execuo Static: visvel dentro do seu procedimento e durante toda a execuo Constantes System-defined constants: True; False; Null; Empty; Nothing Intrinsic constants (bibliotecas do VBA): Const LEFT_BUTTON = 1 Symbolic constants: Const PI = 3,14 Visual Basic for Applications: # 3 Variveis II Tipo de variveis Variant tipo genrico Byte 0 at 255 Boolean True ou False Integer -32.768 at 32.767 Long -2.147.483.648 at 2.147.483.647 Single -3,402823E38 at -1,401298E-45 (para valores negativos) 1,401298E-45 at 3,402823E38 (para valores positivos) Double -1,79769313486232E308 at -4,94065645841247E-324 (negativos) 4,94065645841247E-324 at 1,79769313486232E308 (positivos) Currency -922.337.203.685.477,5808 at 922.337.203.685.477,5807 Decimal +/-79.228.162.514.264.337.593.543.950.335 (sem casas decimais) +/-7,9228162514264337593543950335 (com casas decimais) Date 1 de Janeiro de 100 at 31 de Dezembro de 9999 String 1 at aproximadamente 2 bilies de caracteres (65.400 se tamanho fixo) Type definido pelo utilizador Object referncia a objectos Visual Basic for Applications: # 4 Operadores I Aritmticos + (adio) - (subtraco e negao) * (multiplicao) / (diviso) \ (diviso inteira) ^ (exponenciao) Mod (resto da diviso) Relacionais = (igual a) > (maior que) < (menor que) <> (diferente de) >= (maior ou igual) <= (menor ou igual) Like (padres de texto) Is (referncia de objectos) Lgicos And (e lgico) Or (ou lgico) Not (negao) Imp (implicao) Xor (ou exclusivo) Eqv (equivalncia) Texto & (concatenao) Visual Basic for Applications: # 5 Operadores II Precedncias Operador Operao ^ exponenciao - negao * , / multiplicao e diviso \ diviso inteira Mod resto da diviso + , - adio e subtraco & concatenao = , > , < , <> , >= , <= , Like , Is comparao And , Or , Not , Imp , Xor , Eqv lgica Outros caracteres Rem ou comentrios : mltiplas instrues na mesma linha _ uma instruo em mltiplas linhas Visual Basic for Applications: # 6 Procedimentos Procedimentos Sub [Public | Private] [Static] Sub nome ( [argumentos] ) [...] [Exit Sub] [...] End Sub Procedimentos Function [Public | Private] [Static] Function nome ( [argumentos] ) [As tipo] [...] [nome = expresso] [Exit Function] [...] [nome = expresso] End Function Visual Basic for Applications: # 7 Argumentos Declarar argumentos [Optional] [ByRef | ByVal] [ParamArray] argumento[( )] [As tipo] [=valor_por_defeito] Passar e nomear argumentos Exemplo: Function area (comp As Integer, alt As Integer) As Integer Passar argumentos: var = area(5, 4) Nomear argumentos: var = area (alt:= 4, comp:= 5) Opes de declarao ByRef: declara que o argumento passado por referncia (o procedimento recebe o prprio endereo da varivel passada como argumento) ByVal: declara que o argumento passado por valor (o procedimento apenas recebe o valor da varivel passada como argumento) Optional: declara que o argumento no obrigatrio (esta declarao implica que os restantes argumentos sejam igualmente declarados como Optional) ParamArray: declara um nmero arbitrrio de argumentos no obrigatrios (esta declarao s pode ser utilizada como ltimo argumento na lista de argumentos) Visual Basic for Applications: # 8 Arrays Declarar arrays Dim nome (limite_superior) As tipo Dim nome (limite_inferior To limite_superior) As tipo Option Base 1 Preencher arrays Atribuio directa por elemento Funo Array Arrays com mais do que uma dimenso Dim nome (limite_superior_1, ... , limite_superior_n) As tipo Arrays dinmicos ReDim: redefine os limites de um dado array Redim Preserve: redefine os limites de um dado array e preserva os valores nele existentes ( aplicvel apenas quando se redefine a ltima dimenso do array) LBound: devolve o limite inferior de um dado array UBound: devolve o limite superior de um dado array Visual Basic for Applications: # 9 Estruturas de Deciso Execuo condicional If condio_1 Then [...] ... [ElseIf condio_n Then [...]] [Else [...]] End If Mltiplos testes Select Case expresso_a_testar Case lista_de_expresses_1 [...] ... [Case lista_de_expresses_n [...]] [Case Else [...]] End Select Macros IIf (condio, valor_se_verdade, valor_se_falso) Switch (condio_1, valor_1, , condio_n, valor_n) Choose (ndice, valor_1, , valor_n) Visual Basic for Applications: # 10 Cdigo em Ciclo Ciclos condicionais Do {While | Until} condio [...] [Exit Do] [...] Loop Do [...] [Exit Do] [...] Loop {While | Until} condio Ciclos numerveis For contador = incio To fim [Step incremento] [...] [Exit For] [...] Next [contador] For Each elemento In coleco [...] [Exit For] [...] Next [elemento] Visual Basic for Applications: # 11 Funes Bsicas I Converso de dados CBool (expresso) CByte (expresso) CCur (expresso) CDate (expresso) CDbl (expresso) CInt (expresso) CLng (expresso) CSng (expresso) CVar (expresso) CStr (expresso) Testes sobre os dados IsArray (varivel) IsDate (expresso) IsEmpty (varivel) IsNumeric (expresso) IsNull (varivel) IsMissing (argumento) TypeName (varivel) VarType (varivel) Caixas de mensagem MsgBox (mensagem [, ]) InputBox (mensagem [, ]) Visual Basic for Applications: # 12 Funes Bsicas II Manipulao de strings Asc (string) Chr (cdigo) LCase (string) Len (string | varivel) Mid (string, incio [, comprimento]) Left (string, comprimento) Trim (string) LTrim (string) Str (nmero) Val (string) InStr ([incio,] string_geral, string_procura) StrComp (string1, string2 [, mtodo]) Manipulao de datas e horas Date Year (data) Time Month (data) Now Day (data) DateSerial (ano, ms, dia) Hour (hora) TimeSerial (hora, minuto, segundo) Minute (hora) Weekday (data) Second (hora) Visual Basic for Applications: # 13 VBA e Excel I Macros Menu <Ferramentas> seguido da opo <Macro> Gravar macros: botes <Terminar gravao> e <Referncia relativa> Executar e editar macros Visual Basic for Applications: # 14 VBA e Excel II Formulrios Menu <Ver> seguido das opes <Barras de ferramentas> e <Formulrios> Ligar clulas aos controlos: menu <Formatar> seguido da opo <Controlo...> e do separador <Controlo> Atribuir macros aos controlos: Menu especfico sobre o controlo seguido da opo <Atribuir macro...> Visual Basic for Applications: # 15 VBA e Excel III Editor do Visual Basic Projecto Propriedades Cdigo Visual Basic for Applications: # 16 Cdigo VBA e Funes do Excel Cdigo VBA como funo do Excel Funes do Excel como cdigo VBA Visual Basic for Applications: # 17 Objectos I Conceito Qualquer coisa que numa aplicao se pode ver e manipular de algum modo Formas de manipular um objecto Alterar o seu conjunto de propriedades Activar mtodos especficos do objecto para executar determinadas tarefas Associar procedimentos aos eventos que podem ocorrer sobre o objecto Propriedades As propriedades so os atributos que definem as caractersticas dos objectos ActiveCell.Formula = "=A1*10" Certas propriedades so elas mesmas objectos ActiveCell.Font.Italic = True Existem propriedades que so s de leitura col = ActiveCell.Column Visual Basic for Applications: # 18 Objectos II Mtodos Os mtodos so aces que descrevem o que os objectos podem fazer So executados sobre os objectos e podem conter ou no argumentos ActiveCell.Clear ActiveCell.AddComment "comentrio" Eventos Os eventos so algo que acontece aos objectos Ocorrem como resultado de aces do utilizador, do sistema ou do prprio cdigo Private Sub Worksheet_Activate() Classes e instncias Classe de objectos: conjunto de objectos com as mesmas propriedades, com os mesmos mtodos e que respondem aos mesmos eventos Instncia: todo o objecto particular de uma classe Visual Basic for Applications: # 19 Objectos III Hierarquia de objectos Application: objecto de topo da hierarquia de objectos Caminhos hierrquicos Application.Workbooks(Livro1).Worksheets(Folha1) Caminhos nicos podem ser abreviados Worksheets(Folha1) ActiveCell Collection: tipo de objecto que resulta da coleco de outros objectos Variveis como objectos Tipo de dados Object A instruo Set A constante Nothing O operador Is A varivel Me Mltiplas aces sobre um objecto With objecto [...] End With Visual Basic for Applications: # 20 Objectos Workbook Referenciao [Application.]Workbooks(Livro1) [Application.]Workbooks(1) [Application.]ActiveWorkbook [Application.]ThisWorkbook Workbooks Collection [Application.]Workbooks.Add [Application.]Workbooks.Open(FileName) [Application.]Workbooks.Close [Application.]Workbooks.Count Propriedades workbook.Name workbook.Path workbook.FullName workbook.Saved Mtodos workbook.Activate workbook.Save workbook.Close(SaveChanges, FileName) workbook.SaveAs(FileName) workbook.Protect(Password, Structure, Windows) workbook.Unprotect(Password) Eventos Private Sub Workbook_Activate() Private Sub Workbook_Open() Private Sub Workbook_Newsheet(ByVal Sh As Object) Visual Basic for Applications: # 21 Objectos Worksheet Referenciao Sheets = Worksheets + Charts [ActiveWorkbook.]Worksheets(Folha1) [ActiveWorkbook.]Worksheets(1) [ActiveWorkbook.]ActiveSheet Worksheets Collection [ActiveWorkbook.]Worksheets.Add(Before, After, Count) [ActiveWorkbook.]Worksheets.Count Propriedades worksheet.Name worksheet.Visible Mtodos worksheet.Activate worksheet.Copy(Before, After) worksheet.Delete worksheet.Move(Before, After) worksheet.Protect(Passwd, DrawingObjs, Contents) worksheet.Calculate Eventos Private Sub Worksheet_Calculate() Private Sub Worksheet_Change(ByVal Target As Excel.Range) Visual Basic for Applications: # 22 Objectos Range Referenciao [ActiveSheet.]Range(B2:C3) [ActiveSheet.]Range(A1, B2:C3) [ActiveSheet.]Range(Lucro) [ActiveSheet.]Range(B2, C3) [ActiveSheet.]Cells(1, 2) [ActiveSheet.]Range(B2:C3).Cells(1, 2) Propriedades range.Row range.Column range.Rows(Index) range.Columns(Index) range.Offset(RowOffset, ColumnOffset) range.Value range.Formula range.FormulaLocal range.FormulaR1C1 range.FormulaR1C1Local range.Address(RowAbsolute, ColumnAbsolute) range.Count Mtodos range.Select range.Calculate range.Copy(Destination) range.Cut(Destination) range.Clear range.ClearComments range.ClearContents range.ClearFormats range.FillDown range.FillUp range.FillLeft range.FillRight