Anda di halaman 1dari 13

Instituto Superior de Engenharia do Porto Departamento de Engenharia Informtica

VISUAL BASIC PARA APLICAES (VBA)


Alberto A. C. Sampaio

1999 2003 Porto

NDICE

1. PROJECTOS EM VISUAL BASIC PARA APLICAES .................... 1


1.1 1.2 INTRODUO ........................................................................................................ 1 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. 4. 5. SELECO E INTERVALO ................................................................................... 6 PROPRIEDADES DAS CLULAS .......................................................................... 7 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

1.
1.1

Projectos em Visual Basic para Aplicaes


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 Editor1. 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.
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.
1

VBA Alberto A. C. Sampaio

Instituto Superior de Engenharia do Porto

A janela de Projecto no Excel, lista todos os projectos e seus itens, como exemplificado na figura seguinte: Os botes correspondem a: View Code (ver janela de cdigo) View Object (ver objectos) Toggle Folders (projecto por pastas)

Figura 1-2 Janela

dos projectos

Como se v existe um projecto para cada livro, com as folhas destes. Por projecto podem-se ter os seguintes componentes2: 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.

Existem tambm mdulos de classe, que no sero aqui abordados.

VBA Alberto A. C. Sampaio

Instituto Superior de Engenharia do Porto

2.
2.1

Objectos e Coleces
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.

VBA Alberto A. C. Sampaio

Instituto Superior de Engenharia do Porto

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) ActiveSheet.Cells(1) refere-se clula A2 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:

VBA Alberto A. C. Sampaio

Instituto Superior de Engenharia do Porto

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

VBA Alberto A. C. Sampaio

Instituto Superior de Engenharia do Porto

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) Range(A1, C2) Intervalo de apenas uma clula, A1. 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.

VBA Alberto A. C. Sampaio

Instituto Superior de Engenharia do Porto

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 Color Italic Size Underline

Booleana: True activa estilo negrito; False desactiva estilo Cor da fonte. Booleana: True activa estilo itlico; False desactiva estilo Um valor para o tamenho da fonte (por exemplo 12). Booleana: True activa estilo sublinhado; False desactiva estilo

Processo idntico ocorre com o interior de uma clula e coma moldura.

VBA Alberto A. C. Sampaio

Instituto Superior de Engenharia do Porto

5.
5.1

Criao de Aplicaes VBA


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,

VBA Alberto A. C. Sampaio

Instituto Superior de Engenharia do Porto

View>Toolbars>Visual Basic. Nesta barra existem diversos botes como mostrado na figura seguinte.

faz aparecer a caixa de ferramentas. Da caixa de ferramentas Premindo-se o boto 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 pretendido3.

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.

A nossa abordagem de implementao em VB est aqui bastante simplificada.

VBA Alberto A. C. Sampaio

Instituto Superior de Engenharia do Porto

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.

VBA Alberto A. C. Sampaio

10

Instituto Superior de Engenharia do Porto

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.

VBA Alberto A. C. Sampaio

11

Anda mungkin juga menyukai