Escolar Documentos
Profissional Documentos
Cultura Documentos
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 integrado com o Excel 5 em 1994. 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: # 1
Variveis I
Tipos
Byte Boolean Integer Long Single Double Currency Decimal Date String Variant Object Type 0 at 255 True ou False -32.768 at 32.767 -2.147.483.648 at 2.147.483.647 -3,402823E38 at -1,401298E-45 (para valores negativos) 1,401298E-45 at 3,402823E38 (para valores positivos) -1,79769313486232E308 at -4,94065645841247E-324 (negativos) 4,94065645841247E-324 at 1,79769313486232E308 (positivos) -922.337.203.685.477,5808 at 922.337.203.685.477,5807 +/-79.228.162.514.264.337.593.543.950.335 (sem casas decimais) +/-7,9228162514264337593543950335 (com casas decimais) 1 de Janeiro de 100 at 31 de Dezembro de 9999 1 at aproximadamente 2 bilies de caracteres (at 65.400 se fixo) qualquer valor numrico ou de texto qualquer referncia a um objecto definido pelo utilizador Visual Basic for Applications: # 2
Variveis II
Declarao de variveis implcita e explicitamente
Necessidade de declarar ou no as variveis antes de as usar Para no permitir o uso de variveis implcitas: Option Explicit Para declarar uma varivel VAR: Dim VAR Para declarar uma varivel VAR como sendo do tipo TYPE: Dim VAR As TYPE Uma varivel sem declarao de tipo tem por defeito o tipo Variant
Valores constantes
Symbolic constants: Const PI = 3,14 Intrinsic constants (definidos em bibliotecas do VBA): Const LEFT_BUTTON = 1 System-defined constants: True; False; Null; Empty; Nothing
Operadores I
Aritmticos
+ (adio) / (diviso) Mod (resto da diviso) - (subtraco e negao) \ (diviso inteira) * (multiplicao) ^ (exponenciao)
Relacionais
= (igual a) <> (diferente de) Like (como) > (maior que) >= (maior ou igual) Is (referncia de objectos) Or (ou lgico) Xor (ou exclusivo) < (menor que) <= (menor ou igual)
Lgicos
And (e lgico) Imp (implicao) Not (negao) Eqv (equivalncia lgica)
Texto
& (concatenao)
Operadores II
Precedncias
Operador ^ *,/ \ Mod +,& = , > , < , <> , >= , <= , Like , Is And , Or , Not , Imp , Xor , Eqv Operao exponenciao negao multiplicao e diviso diviso inteira resto da diviso adio e subtraco concatenao comparao lgica
Outros caracteres
Rem ou (comentrios) : (mltiplas instrues na mesma linha) _ (uma instruo em mltiplas linhas) Visual Basic for Applications: # 5
Procedimentos
Procedimentos Sub
[Public | Private] [Static] Sub nome [(lista_de_argumentos)] [...] [Exit Sub] [...] End Sub
Procedimentos Function
[Public | Private] [Static] Function nome [(lista_de_argumentos)] [As tipo] [...] [nome = expresso] [Exit Function] [...] [nome = expresso] End Function
Argumentos
Declarar argumentos
[Optional] [ByVal | ByRef] [ParamArray] argumento[( )] [As tipo] [= valor_por_defeito] Function area (comp As Integer, alt As Integer) As Integer
Passar argumentos
Correctamente: Erradamente: a = area(5,4) a = area 5,4 area 5,4 area (5,4) Call area(5,4) Call area 5,4
Nomear argumentos
area alt:= 4, comp:= 5 a = area (alt:= 4, comp:= 5)
Opes
Optional: indica que o argumento no necessrio. ByVal: indica que o argumento passado por valor. ByRef: indica que o argumento passado por referncia (por defeito, os argumento so passados por referncia). ParamArray: permite aceitar um nmero arbitrrio de argumentos.
Arrays
Declarar arrays
Dim nome_array(n_elementos) As tipo Option Base 1 Dim nome_array(limite_inferior To limite_superior) As tipo
Preencher arrays
Atribuio directa por elemento Usando a funo Array
Arrays dinmicos
Declarao ReDim Declarao Preserve Limites inferior e superior de um array: LBound e UBound
Estruturas de Deciso
Execuo condicional
If condio Then [...] [ElseIf n_condio Then [...]] [Else [...]] End If
Mltiplos testes
Select Case expresso_a_testar [Case n_lista_de_expresses [...]] ... [Case Else [...]] End Select
Choose (ndice, valor_1, , valor_n) Switch (expr_1, valor_1, , expr_n, valor_n) Visual Basic for Applications: # 9
Cdigo em Ciclo
Ciclos condicionais
Do [ {While | Until} condio] [...] [Exit Do] [...] Loop Do [] [Exit Do] [...] Loop [ {While | Until} condio] While condio [] Wend
Ciclos numerveis
For contador = incio To fim [Step incremento] [...] [Exit For] [...] Next [contador] For Each elemento In grupo [...] [Exit For] [...] Next [elemento]
Funes Bsicas I
Converso de dados
CBool (expresso) CCur (expresso) CDbl (expresso) CLng (expresso) CVar (expresso) CByte (expresso) CDate (expresso) CInt (expresso) CSng (expresso) CStr (expresso)
Caixas de mensagem
MsgBox (mensagem [, ]) InputBox (mensagem [, ]) Visual Basic for Applications: # 11
Funes Bsicas II
Manipulao de strings
Asc (string) LCase (string) Len (string | varivel) Left (string, comprimento) Trim (string) Str (nmero) InStr ([incio,] string_geral, string_procura) Chr (cdigo) UCase (string) Space (nmero) Mid (string, incio [, comprimento]) LTrim (string) Val (string) StrComp (string1, string2 [, mtodo]) Year (data) Month (data) Day (data) Weekday (data) Hour (hora) Minute (hora) Second (hora) Visual Basic for Applications: # 12
VBA e Excel I
Macros
Menu <Ferramentas> seguido da opo <Macro>
Gravar macros
Botes <Terminar gravao> e <Referncia relativa>
VBA e Excel II
Formulrios
Menu <Ver> seguido das opes <Barras de ferramentas> e <Formulrios>
Objectos I
Conceito
Qualquer coisa que numa aplicao se pode ver e manipular de algum modo
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
Hierarquia de objectos
Objecto mais geral: Application Conceito de Collection Caminhos hierrquicos
Application.Workbooks(Livro1).Worksheets(Folha1) Application.Forms(Formulrio1)
Objectos II
Propriedades
As propriedades so os atributos que definem as caractersticas dos objectos Propriedades que referenciam objectos
ActiveCell.Font.Italic
Propriedades s de leitura
Mtodos
Os mtodos so aces que descrevem o que os objectos podem fazer So executados sobre os objectos e podem conter ou no argumentos
Application.CloseCurrentDatabase Combo1.Add novo item
Eventos
Os eventos so algo que acontece aos objectos Ocorrem como resultado de aces do utilizador, do sistema ou do prprio cdigo
Private Sub Form_Load()
Objectos III
Variveis como objectos
Tipo de dados Object A instruo Set A constante Nothing O operador Is
Objectos Workbook
Referenciao
[Application.]Workbooks(1) [Application.]ActiveWorkbook [Application.]Workbooks(Livro1) [Application.]ThisWorkbook [Application.]Workbooks.Open(FileName) [Application.]Workbooks.Count workbook.Name workbook.Saved
Workbooks Collection
[Application.]Workbooks.Add [Application.]Workbooks.Close
Propriedades
workbook.FullName workbook.Path
Mtodos
workbook.Activate workbook.Close(SaveChanges, FileName) workbook.Save 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) Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Objectos Worksheet
Referenciao
Sheets, Worksheets e Charts [ActiveWorkbook.]Worksheets(1) [ActiveWorkbook.]Worksheets(Folha1) [ActiveWorkbook.]Worksheets(Array(Folha4, Folha5)) [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.Move(Before, After) worksheet.Delete worksheets.FillAcrossSheets(Range, Type) worksheet.Calculate worksheet.Protect(Password, DrawingObjects, Contents)
Eventos
Private Sub Worksheet_Calculate() Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Objectos Range
Referenciao
[ActiveSheet.]Range(A1) [ActiveSheet.]Range(Lucro) [ActiveSheet.]Cells(1, 2) [ActiveSheet.]Range(A1:B5) [ActiveSheet.]Range(A1, B5) [ActiveSheet.].Range(B2:C5).Cells(2, 1) range.Column worksheet/range.Columns(Index) range.Formula range.Select range.Count range.Cut(Destination) range.ClearComments range.ClearFormats range.FillUp range.FillRight name.Delete