Sie sind auf Seite 1von 21

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
Em 1994, foi inicialmente integrado no Excel 5 e a partir da a sua expanso para
outras aplicaes foi gradual
Em 1997, com a sada do Office 97 a Microsoft concretizou um dos seus grandes
objectivos, ter um ambiente de programao completamente integrado nos seus
quatro produtos mais famosos: 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
Para que servem?
Servem para guardar valores temporariamente em memria

Declarao explcita de variveis


Declarar uma varivel VAR: Dim VAR
Declarar uma varivel VAR como sendo do tipo TYPE: Dim VAR As TYPE
Variveis sem declarao de tipo tm por defeito o tipo Variant

Declarao implcita de variveis


Possibilidade de no declarar variveis
Variveis no declaradas tm por defeito o tipo Variant
No permitir o uso de variveis implcitas: Option Explicit

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
Visvel apenas no prprio procedimento e durante a sua execuo: Dim

Visual Basic for Applications: # 2

Variveis II
Tipo de variveis
Variant
Boolean
Byte
Integer
Long
Single
Double
Currency
Decimal
Date
String
Object

tipo genrico
True ou False
0 at 255
-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 (65.400 se tamanho fixo)
tipo genrico para referncia a objectos
Visual Basic for Applications: # 3

Operadores I
Aritmticos
+ (adio)
/ (diviso)
Mod (resto da diviso)

- (subtraco e negao)
\ (diviso inteira)

* (multiplicao)
^ (exponenciao)

> (maior que)


>= (maior ou igual)

< (menor que)


<= (menor ou igual)

Or (ou lgico)
Xor (ou exclusivo)

Not (negao)
Eqv (equivalncia lgica)

Relacionais
= (igual a)
<> (diferente de)
Like (como)

Lgicos
And (e lgico)
Imp (implicao)

Texto
& (concatenao)

Visual Basic for Applications: # 4

Operadores II
Precedncias
Operador
^
*,/
\
Mod
+,&
= , > , < , <> , >= , <= , Like
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

:
_

comentrios
mltiplas instrues na mesma linha
uma instruo em mltiplas linhas

Caixas de mensagem
MsgBox (mensagem)

InputBox (mensagem)
Visual Basic for Applications: # 5

Procedimentos I
Para que servem?
Quando uma dada sequncia de instrues (tarefa) executada repetidamente
em diferentes partes do cdigo, deve ser criado um procedimento que substitua e
concentre num nico local a sequncia de instrues relativa tarefa a executar
O uso de procedimentos aumenta a produtividade do programador pois diminui o
tamanho global do cdigo a escrever, facilita a edio da sequncia de instrues
relativa tarefa em causa, e minimiza a potencial ocorrncia de erros

Procedimentos Sub
So utilizados para executar tarefas independentes
[Public | Private] Sub nome ( [argumentos] )
[...]
[Exit Sub]
[...]
End Sub

Visual Basic for Applications: # 6

Procedimentos II
Procedimentos Function
So utilizados para calcular/retornar valores
[Public | Private] Function nome ( [argumentos] ) [As tipo]
[...]
[nome = expresso]
[Exit Function]
[...]
[nome = expresso]
End Function

Argumentos
Declarar argumentos: argumento [As tipo]
Function area (comp As Integer, alt As Integer) As Integer
Passar argumentos: var = area(5, 4)
Nomear argumentos: var = area (alt:= 4, comp:= 5)
Argumentos opcionais: Optional argumento [As tipo] = valor_por_defeito
Function area (comp As Integer, Optional alt As Integer = 1) As Integer
A declarao de um argumento opcional implica que os argumentos subsequentes
sejam igualmente declarados como opcionais
Visual Basic for Applications: # 7

VBA e Excel I
Editor do Visual Basic
Menu <Ver> seguido das opes <Barras de ferramentas> e <Visual Basic>
Janelas de projecto, de propriedades e de cdigo

Visual Basic for Applications: # 8

VBA e Excel II
Cdigo VBA
como funo
do Excel

Visual Basic for Applications: # 9

VBA e Excel III


Macros
Menu <Ferramentas> seguido da opo <Macro>
Gravar macros: botes <Terminar gravao> e <Referncia relativa>

Visual Basic for Applications: # 10

VBA e Excel IV
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: # 11

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

Visual Basic for Applications: # 12

Cdigo em Ciclo
Ciclos condicionais

Ciclos numerveis

Do {While | Until} condio


[...]
[Exit Do]
[...]
Loop

For contador = incio To fim [Step incremento]


[...]
[Exit For]
[...]
Next [contador]

Do

For Each elemento In coleco


[...]
[Exit For]
[...]
Next [elemento]

[...]
[Exit Do]
[...]
Loop {While | Until} condio

Visual Basic for Applications: # 13

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

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 Workbook_Open()
Private Sub Worksheet_Activate()

Visual Basic for Applications: # 15

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

Visual Basic for Applications: # 16

Objectos Workbook
Referenciao
Referncia directa ao nome do livro: [Application.]Workbooks(Livro1)
Referncia ao livro que tem o foco: [Application.]ActiveWorkbook

Propriedades
workbook.Name nome do livro (s de leitura)
workbook.Saved indica se existem alteraes por guardar

Mtodos
workbook.Save guarda as ltimas alteraes
workbook.Close(SaveChanges, FileName) fecha o livro

Eventos
Private Sub Workbook_Open() executado quando o livro aberto
Private Sub Workbook_Activate() executado quando o livro passa a activo
Visual Basic for Applications: # 17

Objectos Worksheet
Referenciao
Referncia directa ao nome da folha: [ActiveWorkbook.]Worksheets(Folha1)
Referncia folha que tem o foco: [ActiveWorkbook.]ActiveSheet

Propriedades
worksheet.Name nome da folha
worksheet.Visible indica a visibilidade da folha

Mtodos
worksheet.Delete elimina a folha
worksheet.Calculate recalcula todas as frmulas presentes na folha

Eventos
Private Sub Worksheet_Activate() executado quando a folha passa a activa
Private Sub Worksheet_Calculate() executado sempre que a folha recalculada
Visual Basic for Applications: # 18

Objectos Range
Referenciao
Referncia directa a clulas ou intervalo de clulas:
[ActiveSheet.]Range(A1)
[ActiveSheet.]Range(B2:C3)
[ActiveSheet.]Range(A1,B2:C3)
Referncia directa a clulas:
[ActiveSheet.]Cells(1,1)
[ActiveSheet.]Range(B2:C3).Cells(1,1)

Propriedades
range.Value indica o valor presente no range
range.Formula indica a frmula presente no range (notao standard)
range.FormulaLocal indica a frmula presente no range (notao da instalao)
range.Offset(RowOffset, ColumnOffset) especifica um deslocamento do range

Mtodos
range.Select selecciona o range (Selection referencia o range seleccionado)
range.ClearComments remove os comentrios das clulas do range
range.ClearContents remove o contedo das clulas do range
range.ClearFormats remove a formatao das clulas do range
range.Clear remove tudo o que diz respeito s clulas do range
Visual Basic for Applications: # 19

Objectos Control I
Propriedades comuns
Name nome que identifica o control
Left / Top posio relativa ao canto superior esquerdo do form
Height / Width altura e comprimento do control
BackColor / ForeColor cor do fundo e cor do texto do control
Font tipo de letra do control
Caption texto presente no control
ControlTipText texto de ajuda para quando se mantm o foco sobre o control
TabIndex ordem de navegao do control (utilizando a tecla Tab)
TabStop se False previne a navegao por intermdio da tecla Tab
Visible visibilidade do control
Enabled se False previne o control de receber o foco e responder a eventos
Locked se True previne o utilizador de editar o valor presente no control

Visual Basic for Applications: # 20

Objectos Control II
Command button
Default boto seleccionado por defeito quando se abre o formulrio
Cancel boto seleccionado por defeito no caso do formulrio ser cancelado
CommandButton_Click( ) evento associado aco de premir o boto

Text box
Text texto presente na caixa de texto
PasswordChar caracter especial de edio para introduo de passwords
TextBox_Change( ) ocorre sempre que o contedo da caixa alterado

Combo / List boxes


AddItem adiciona uma nova entrada caixa
ListIndex entrada seleccionada na caixa (a primeira entrada a zero)
ComboBox_Change( ) ocorre sempre que o contedo da caixa alterado

Visual Basic for Applications: # 21