Você está na página 1de 13

1999 2003 Porto

Instituto Superior de Engenharia do Porto


Departamento de Engenharia Informtica













VISUAL BASIC PARA APLICAES
(VBA)




Alberto A. C. Sampaio






I



NDICE




1. PROJECTOS EM VISUAL BASIC PARA APLICAES.................... 1
1.1 INTRODUO ........................................................................................................ 1
1.2 AMBIENTE DE DESENVOLVIMENTO........................................................................ 1
2. OBJECTOS E COLECES........................................................................... 3
2.1 OBJECTOS ESPECFICOS DOS APLICATIVOS............................................................. 3
2.2 COLECO............................................................................................................ 4
2.2.1 Aceder a Um Elemento de uma Coleco...................................................... 4
2.2.2 Instruo Especfica para Percorrer Uma Coleco..................................... 4
3. SELECO E INTERVALO................................................................................... 6
4. PROPRIEDADES DAS CLULAS .......................................................................... 7
5. CRIAO DE APLICAES VBA ........................................................................ 8
5.1 UTILIZAO DE FORMULRIOS.............................................................................. 8
5.2 INSERO DE OBJECTOS NA FOLHA DE CLCULO................................................... 8
5.2.1 Objectos do VBA .......................................................................................... 8
5.3 ADICIONAR OUTRAS ROTINAS..............................................................................10
5.4 UTILIZAO DE VARIVEIS ..................................................................................11
5.5 EXERCCIOS .........................................................................................................11


Instituto Superior de Engenharia do Porto
VBA Alberto A. C. Sampaio
1
1. Projectos em Visual Basic para Aplicaes
1.1 Introduo
No Excel possivel elaborar pequenas rotinas, chamadas macros, sem ter de programar.
Para isso h que recorrer ao gravador de macros do Excel. No entanto, para ser til,
geralmente necessrio alterar posteriormente o cdigo gravado s necessidades do momento.
Caso no o faa essas macros gravadas ser-lhe-o de pouca utilidade.
Se o leitor pretende maximizar o potencial do Excel, ento ter de programar no Excel, e
para isso sero aqui introduzidos conceitos importantes para programao usando-se o
Visual Basic para Aplicaes. As instrues so as mesmas do Vuaisl Basic.
1.2 Ambiente de Desenvolvimento
Desde a verso Excel 97, que se passou a ter na aplicao Excel um ambiente de
desenvolvimento em Visual Basic especfico para essa aplicao.
Para se aceder ao ambiente, seleccione a partir da barra de o menus, Tools>Macro>Visual
Basic Editor
1
. Tambm se pode aceder atravs do atalho de teclas, Alt+F11. O ambiente do
VBA mostrado na figura seguinte.
janela de
projecto
janela das
propriedades

Figura 1-1 Ambiente de Desenvolvimento do VBA.
Tem como principais caractersticas, permitir permitir vrios projectos em simultneo, e
possuir uma estrutura hierrquica.

1
Tambm pode tornar visvel a barra de ferramentas das Macros, e ter assim sempre disponvel botes relativos
ao Visual Basic. Para se inserir essa barra dever escolher do menu, View>Toolbars>Visual Basic.
Instituto Superior de Engenharia do Porto
VBA Alberto A. C. Sampaio
2
A janela de Projecto no Excel, lista todos os projectos e seus itens, como exemplificado na
figura seguinte:

Figura 1-2 Janela dos projectos

Os botes correspondem a:
View Code (ver janela de cdigo)
View Object (ver objectos)
Toggle Folders (projecto por pastas)

Como se v existe um projecto para cada livro, com as folhas destes. Por projecto podem-se
ter os seguintes componentes
2
:
Objectos do Excel
Formulrios criados pelo programador
Mdulos de cdigo
O cdigo VBA ter de estar associado a estes componentes de um projecto. Logo, todos
eles tm associada uma janela de cdigo, aonde se pode introduzir o respectivo cdigo. Estas
janelas so como editores de texto, bastante simples, e especializados para cdigo VB. Na
parte superior de cada janela especificam-se opes do VB, constantes e variveis. O
restante espao serve para as rotinas pr-definidas de eventos, e para as rotinas criadas pelo
programador.

2
Existem tambm mdulos de classe, que no sero aqui abordados.
Instituto Superior de Engenharia do Porto
VBA Alberto A. C. Sampaio
3
2. Objectos e Coleces
2.1 Objectos Especficos dos Aplicativos
Para alm dos objectos do Visual Basic (ex: formulrios, botes, etc.) existem objectos
especficos de cada aplicativo que suporta VBA. Estes objectos vo sendo alterados com o
surgimento de novas verses dos aplicativos, por isso conveniente consultar a respectiva
ajuda (atravs de F1).
Objectos do Microsoft Excel (Office 2000): so mostrados na figura seguinte.

Figura 2-1 Objectos do Microsoft Excel
Os objectos do Excel da janela de projecto (ver Figura 1-2) esto obviamente relacionados
com alguns destes objectos. Por exemplo, existir um projecto para cada livro.
Para cada objecto dos tipos livro, folha ou grfico existem rotinas associadas a cada
evento que esses objectos suportam.
O objecto Application representa a prpria aplicao, neste caso o Excel.
Em cada momento existe apenas um livro activo, uma folha activa, etc. O application
possui propriedades que contm essas informaes, por exemplo:
ActiveWorkbook o livro activo (que est a ser usado)
ActiveSheet - a folha activa do livro activo
ActiveCell a clula activa
Muitas destas propriedades no necessitam ser antecedidas do especificador application.
Por exemplo, em lugar de Application.ActiveWorkbook.Name, pode-se escrever apenas,
ActiveWorkbook.Name.
Instituto Superior de Engenharia do Porto
VBA Alberto A. C. Sampaio
4
2.2 Coleco
Alguns dos elementos do modelo de objectos so coleces. Uma coleco um objecto
que contm outros objectos, normalmente do mesmo tipo. Os mais relevantes so:
Workbooks livros abertos;
Worksheets folhas de um livro;
Cells clulas.
Para se saber quantos elementos tem uma coleco, todas as coleces possuem a
propriedade Count.
A coleco Cells uma propriedade que representa todas as clulas do objecto a que se
aplica. Pode ser aplicada aos objectos aplicao, intervalo (ver mais frente) e folha.
O objecto folha um elemento da coleco Worksheets.
2.2.1 Aceder a Um Elemento de uma Coleco
Cada elemento pode ser identificado pelo nome ou por um nmero de ordem de criao.
Todas as coleces possuem a propriedade Item que permite identificar um elemento da
coleco pela sua posio. Por outro lado, sempre que esta propriedade a propriedade por
pr-definio, ento no necessrio escrev-la.
Ex: Considerar que o primeiro livro aberto no Excel se chama notas.xls. Ento, as duas
expresses seguintes produzem o mesmo resultado.

Workbooks(1) identifica o primeiro livro aberto, e
Workbooks(notas.xls) identifica especifica/e o livro notas.xls.

No caso da coleco Cells, para se identificar uma clula em particular, a coleco tanto
pode ser usada de forma unidimensional como bidimensional, sendo neste caso semelhante a
uma matriz, tendo por base a posio 1,1.

ActiveSheet.Cells(1,2) refere-se clula A2
ActiveSheet.Cells(1) refere-se clula A1

Associado a cada clula existe a propriedade Value que contm o valor da respectiva
clula.

ActiveSheet.Cells(1,1) .value=5 insere 5 na clula A1

Para se se tornar um dado objecto activo usa-se o mtodo Activate.
2.2.2 Instruo Especfica para Percorrer Uma Coleco
A instruo For Each repete um bloco de instrues para cada elemento da coleco (ou
vector). A sua sintaxe :

For Each Elemento In Grupo
[bloco_instrues]
Next [Elemento]

Os componentes da instruo so:
Instituto Superior de Engenharia do Porto
VBA Alberto A. C. Sampaio
5
Elemento Obrigatrio. Uma varivel usada para iterar atravs dos elementos da coleco
(Grupo). Para coleces deve ser do tipo Variant, ou objecto (genrico ou no).
Para vectores apenas pode ser Variant.
Grupo Obrigatrio. Nome da coleco ou vector (neste caso no pode ser de tipos
definidos pelo utilizador (com Type)).
bloco_instrues Opcional. Uma ou mais instrues executadas para cada elemento de
Grupo.
Podem-se imbricar estes ciclos, mas cada Elemento deve ser nico.

Exemplo1: Escreve o nome de cada livro aberto (coleco Workbooks).
...
For Each livro In Workbooks
MsgBox livro.Name
Next livro
...
Instituto Superior de Engenharia do Porto
VBA Alberto A. C. Sampaio
6
3. Seleco e Intervalo
Um intervalo uma clula ou um conjunto de clulas num dado intervalo de endereos de
clulas. Para se representar um intervalo existe uma propriedade prpria chamada Range.
Podemos definir o nmero de intervalos que pretendermos.

Range(A1) Intervalo de apenas uma clula, A1.
Range(A1, C2) Intervalo de 6 clulas, de A1 a C2.

A propriedade Range produz um objecto do tipo Range. Este tipo de objectos tambm
pode ser obtido por outras formas, por exemplo atravs da propriedade (coleco) Cells. Um
objecto Range tambm possui uma propriedade Cells. A propriedade Range aplica-se a uma
folha, a uma aplicao, ou a um objecto Range. Se no se especificar a folha, ento aplica-se
folha activa. Quando a propriedade aplicada a um objecto Range os endereos so
relativos a este intervalo. Um intervalo de apenas uma clula idntico a uma clula.
Alguns exemplos:

Range("A1").Value = Range(B1).value
Worksheets("Sheet1").Range("A1").Value = 10
Uma seleco significa a seleco de um objecto numa janela. A propriedade relativa
seleco chama-se Selection. Aqui interessa-nos a seleco de clulas. Neste caso Selection
produz um objecto do tipo intervalo (Range). Logo possvel usar uma seleco numa
expresso que espere um objecto do tipo intervalo. Por exemplo, passar uma seleco de
clulas feita pelo utilizador para uma sub-rotina desenvolvida por ns.
Instituto Superior de Engenharia do Porto
VBA Alberto A. C. Sampaio
7
4. Propriedades das Clulas
Frequentemente h necessidade de alterar alguma caracterstica das clulas, ou do seu
contedo. Por exemplo, mudar a cor de fundo, ou o estilo do contedo das clulas.
Para se alterar o contedo de uma clula ou intervalo de clulas, basta alterar a
propriedade respectiva. Por exemplo a mudana de cor do contedo consiste em alterar a cr
da fonte para o intervalo.
Exemplo: Formatao da clula activa a negrito.

ActiveCell.Font.Bold = True

Algumas propriedades da fonte:
Tabela 4-1
Bold Booleana: True activa estilo negrito; False desactiva estilo
Color Cor da fonte.
Italic Booleana: True activa estilo itlico; False desactiva estilo
Size Um valor para o tamenho da fonte (por exemplo 12).
Underline Booleana: True activa estilo sublinhado; False desactiva estilo

Processo idntico ocorre com o interior de uma clula e coma moldura.
Instituto Superior de Engenharia do Porto
VBA Alberto A. C. Sampaio
8
5. Criao de Aplicaes VBA
5.1 Utilizao de Formulrios
A utilizao de formulrios em VBA idntica utilizao no VB. A caixa de ferramentas
no visvel at que se insira o primeiro formulrio. A insero pode ser feita atravs do
boto , ou atravs do menu, Insert>>UserForm. Na figura seguinte mostrado um
formulrio contendo um boto.

Um formulrio pode ser chamado a partir de uma qualquer sub-rotina. Quando chamado
ele aparecer com a folha de clculo por trs.
A utilizao de formulrios no VBA idntica utilizao no VB, pelo que no ser aqui
feita. Uma das diferenas mais significativas reside nos nomes dos objectos. Por exemplo, o
formulrio chama-se UserForm em VBA, enquanto se chamava Form em VB.
A abordagem para implementao tambm dever ser a j utilizada em Visual Basic.
5.2 Insero de Objectos na Folha de Clculo
Em adio aos formulrios, tambm possvel colocar objectos directamente na folha de
clculo. No Excel esses objectos podem ser de dois tipos: objectos de formulrio do Excel, e
objectos VBA da caixa de ferramentas. Estes podem ser inclusivamente misturados. Neste
texto apenas se abordam os objectos VBA.
5.2.1 Objectos do VBA
Utilizando objectos do VBA tambm se podem colocar objectos na prpria folha de
clculo e depois, caso se pretenda, associ-los a rotinas de eventos desenvolvidas pelo
programador. Existe uma barra de botes com esses objectos. Previamente dever fazer
aparecer a barra de botes do Visual Basic. Para isso dever escolher a partir do menu,
Instituto Superior de Engenharia do Porto
VBA Alberto A. C. Sampaio
9
View>Toolbars>Visual Basic. Nesta barra existem diversos botes como mostrado na figura
seguinte.

Premindo-se o boto faz aparecer a caixa de ferramentas. Da caixa de ferramentas
seleccionam-se os objectos que se pretendem incluir na folha. A passagem ao modo de
desenho automtica assim que se selecciona um controlo da caixa de ferramentas. Aps o
desenho dos objectos na folha associa-se-lhes o respectivo cdigo.
Para se associar cdigo ao objecto prime-se duas vezes o boto esquerdo do rato sobre o
objecto, ou se prime o boto direito e escolhe-se a opo View Code. Para se alterarem
propriedades do objecto, prime-se o boto direito e escolhe-se a opo Properties. As
rotinas associadas aos eventos suportados por esses objectos ficam ligadas automaticamente
no VBA aos objectos folha do excel (por exemplo sheet1).
Os principais objectos do VBA so: a etiqueta (Label), a caixa de texto (TextBox1) e
o boto (CommandButton). O VBA d o nome aos objectos inseridos na folha de clculos
adicionando um nmero sequencial ao tipo de objecto. Por exemplo, a primeira etiqueta ter
o nome Label1. Esses objectos so idnticos aos do VB. Tal como no VB esses nomes
podem ser alterados.
Vamos em seguida exemplificar a utilizao do boto.

Exemplo 5-1
Elaborar um projecto VBA para somar os valores das clulas A1 e A2, carregando num boto que
dever ter sido criado na folha de clculo. Pretende-se que o resultado surja na clula A3.

Resoluo: Para desenhar o boto, selecciona-se o boto da barra e desenha-se o boto no local
pretendido
3
.


Em seguida altere o texto do boto para Somar. Agora prima duas vezes o boto esquerdo para
aparecer o editor de VBA aonde se escrever o cdigo que permite somar os dois valores.


3
A nossa abordagem de implementao em VB est aqui bastante simplificada.
Instituto Superior de Engenharia do Porto
VBA Alberto A. C. Sampaio
10


Private Sub CommandButton1_Click()
Cells(3,1) = Cells(1,1) + Cells(2,1)
End Sub

Para executar, h que voltar respectiva folha e aps serem preenchidas as clulas A1 e A2 com
valores, premir o boto Somar. Antes, deve ter sado do modo de desenho carregando novamente
no boto .
Como nota final, apesar de ser utilizado o tipo Single, este no tem a preciso adequada,
pelo que se recomenda a utilizao do tipo Double.
5.3 Adicionar Outras Rotinas
Poderiam ser adicionadas outras rotinas janela de cdigo para alm das dos eventos
associados aos objectos colocados na(s) folha(s) de clculo. No caso de se pretender que
essass rotinas sejam utilizadas por rotinas noutras janelas, ento essas rotinas devero ser
desenvolvidas num mdulo de cdigo (module). Para fazer surgir um module seguir o menu
do VBA Insert>Module.
Vamos colocar o clculo da soma numa sub-rotina no mdulo module1.

Sub soma2()
Cells(3, 1) = Cells(1, 1) + Cells(2, 1)
End Sub

E alterar a rotina do evento para:

Private Sub CommandButton1_Click()
Call soma2
End Sub

O resultado mostrado na figura seguinte.
Instituto Superior de Engenharia do Porto
VBA Alberto A. C. Sampaio
11

5.4 Utilizao de Variveis
A utilizao de variveis idntica ao Visual Basic. Por exemplo, para o exemplo anterior
poder-se-ia ter procedido do seguinte modo:

Sub soma2()
Dim n1 As Single, n2 As Single
n1 = Cells(1, 1)
n2 = Cells(2, 1)
Cells(3, 1) = n1+n2
End Sub

5.5 Exerccios
Como exerccio implemente a soluo para o problema dos desvios.

Você também pode gostar