Você está na página 1de 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

Você também pode gostar