Você está na página 1de 11

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 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

Visibilidade e longevidade de uma varivel


Visvel em todos os mdulos e durante toda a execuo: Public Visvel apenas no prprio mdulo e durante toda a execuo: Private ou Dim Visvel apenas no prprio procedimento e durante a sua execuo: Dim Visvel apenas no prprio procedimento e durante toda a execuo: Static

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

Visual Basic for Applications: # 3

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)

Visual Basic for Applications: # 4

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

Visual Basic for Applications: # 6

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.

Visual Basic for Applications: # 7

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

Utilizar arrays com mais do que uma dimenso


Dim nome_array(n_elementos, n_elementos, ...) As tipo

Arrays dinmicos
Declarao ReDim Declarao Preserve Limites inferior e superior de um array: LBound e UBound

Visual Basic for Applications: # 8

Estruturas de Deciso
Execuo condicional
If condio Then [...] [ElseIf n_condio Then [...]] [Else [...]] End If

IIf (condio, valor_se_verdade, valor_se_falso)

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]

Visual Basic for Applications: # 10

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)

Testes sobre os dados


IsArray (varivel) IsEmpty (varivel) IsNull (varivel) TypeName (varivel) IsDate (expresso) IsNumeric (expresso) IsMissing (argumento) VarType (varivel)

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

Manipulao de datas e horas


Date Date$ DateSerial (ano, ms, dia) Time Time$ TimeSerial (hora, minuto, segundo) Now

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: # 13

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: # 14

VBA e Excel III


Editor do Visual Basic
Janela do projecto, janela de propriedades e janela de cdigo Localizador de objectos

Visual Basic for Applications: # 15

Cdigo VBA e Funes do Excel


Cdigo VBA como funo do Excel

Funes do Excel em cdigo VBA

Visual Basic for Applications: # 16

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 um mtodo especfico do objecto para executar uma dada tarefa Definir um procedimento que executado sempre que um dado evento ocorre sobre o objecto

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)

Visual Basic for Applications: # 17

Objectos II
Propriedades
As propriedades so os atributos que definem as caractersticas dos objectos Propriedades que referenciam objectos
ActiveCell.Font.Italic

Consultar e alterar propriedades


var = ActiveCell.Font.Italic ActiveCell.Font.Italic = True

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()

Visual Basic for Applications: # 18

Objectos III
Variveis como objectos
Tipo de dados Object A instruo Set A constante Nothing O operador Is

Mltiplas aces sobre um objecto


With objecto [...] End With

Referenciar a instncia corrente de uma classe


A varivel Me

Visual Basic for Applications: # 19

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)

Visual Basic for Applications: # 20

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)

Visual Basic for Applications: # 21

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

Propriedades & Mtodos


range.Row worksheet/range.Rows(Index) range.Value range.Address(RowAbsolute, ColumnAbsolute) range.Offset(RowOffset, ColumnOffset) range.Copy(Destination) range.Clear range.ClearContents range.FillDown range.FillLeft [ActiveWorkbook.]Names.Add(Name, RefersTo)

Visual Basic for Applications: # 22

Você também pode gostar