O documento discute: (1) O Visual Basic para Aplicações (VBA) é uma linguagem de programação utilizada para automatizar tarefas em aplicativos Windows; (2) No VBA, planilhas, livros e a própria aplicação são representados por objetos com propriedades e métodos; (3) Variáveis, constantes, funções, condições e loops permitem manipular esses objetos e automatizar tarefas.
VBA para Excel: Objetos, Propriedades, Eventos e Métodos
1. O Visual Basic para Aplicações é uma linguagem de programação
utilizada por aplicações Windows e cujo objectivo é a automatização de
tarefas que envolvem objectos
Em programação Visual Basic, O Excel é um Objecto denominado por
Application, um livro é um Workbook e uma folha de cálculo um Worksheet
A programação por objectos segue o método hierárquico em que uma
colecção contém um conjunto de objectos agrupados segundo a sua
categoria e com as suas próprias características e funcionalidades.
Ex: Todos os livros contêm uma colecção Sheets que representa todas as
folhas de cálculo desse livro.
A própria aplicação contém uma colecção de objectos – a colecção
Workbooks que representa todos os ficheiros (livros) presentemente
utilizados pela instância da aplicação actual
O que é o VBA (Visual Basic)?
Objectos
2. Propriedades
Uma propriedade é uma característica de um objecto que representa a sua
aparência e o seu comportamento durante a execução de um programa.
Exemplos: a cor, o tipo de letra, a posição no ecrã e a capacidade de
redimensionamento etc.
NotaNota: Na programação orientada por objectos, todos os objectos pertencentes à mesma categoria
(colecção) contêm as mesmas propriedades; os valores das mesmas poderão diferir de elemento para
elemento (faculdade que torna cada objecto único)
As propriedades dos objectos encontram-se categorizadas em 2 grandes
tipos:
De leitura (Read-Only Properties) – Os valores das propriedades
apenas podem ser alterados na fase de desenho (estrutura) de uma
aplicação (Design-Time)
De leitura e escrita (Read-Write Properties) – Os valores das
propriedades podem ser alterados quer na fase de desenho de uma
aplicação, quer em modo de execução (através de código-fonte).
3. Eventos
Um evento é uma acção que determinado objecto pode reconhecer, ao qual
poderá estar associado código de resposta. Um dos eventos mais comuns é o
evento Click, gerado sempre que o utilizador prime o botão esquerdo do rato sobre
determinado objecto.
Em programação, todos os eventos são procedimentos, ou seja, linhas de código ou
instruções executadas numa sequência lógica que figuram num módulo de
programação (conjunto de procedimentos)
Em programação, os eventos constituem o ponto de partida para toda a execução
e funcionalidade da aplicação
4. Métodos
Um método é uma acção levada a cabo por um objecto. Estas funcionalidades,
tecnicamente conhecidas por funções de membro de uma classe, são
constituídas por um conjunto de instruções que se encontram bem definidas e
estruturadas internamente nesse objecto.
Nota: Os métodos são invocados a partir de módulos de programação, digitando o nome do objecto
que desempenhará a acção, seguido do nome do método, separando os dois com um ponto final.
Ex: Application.Quit
Exercício: Desenhe dois botões de comando com os rótulos «Proteger folha» e
«Desproteger folha» e com os nomes «proteger_folha» e «desproteger_folha»
respectivamente. O 1º botão protege todas as células da folha de cálculo
Sheet1 (Folha1) e o 2º botão repõe a possibilidade de edição.
5. Código atribuído ao botão «Proteger Folha»
Private Sub proteger_folha_Click()
Sheets(“Folha1”).Protect
End Sub
Código atribuído ao botão «Desproteger Folha»
Private Sub desproteger_folha_Click()
Sheets(“Folha1”).Unprotect
End Sub
Execução do Programa
Digitar o texto «Teste» na célula «A1» (é possível, pois a folha não está protegida).
Fazer clique sobre o botão «Proteger Folha»
Tentar eliminar o conteúdo da célula «A1» (impossível, pois a folha está protegida)
6. PROCEDIMENTO – Um procedimento é uma sequência de instruções que
formam um bloco de código que é executado como um todo. Quando
invocamos um procedimento, todo o código nele contido é executado, pelo que
é impossível invocar apenas uma parte do mesmo.
Procedimentos
Existem 3 tipos de procedimentos:
Procedimentos de Evento (Event-Procedures)
Procedimentos Sub (Sub-Procedures)
Procedimentos de Função (Function-Procedures)
7. Sintaxe de declaração dos procedimentos de evento é:
Private Sub <Objecto>_<Evento> ([argumento1], [argumento2], [...])
[Instrução1]
[Instrução2]
[...]
End Sub
Procedimentos de Evento (Event-Procedures)
São procedimentos que dizem respeito a acções reconhecidas por
objectos (eventos)
Exemplo (sem argumentos):
Private Sub Sheet1_Activate()
… Bloco de código associado ao evento Activate de um objecto Worksheet
… Este evento é reconhecido sempre que o utilizador selecciona a folha
… O procedimento não aceita argumentos
End Sub
8. Exemplo (com argumentos):
Private Sub but_KeyPress(Byval KeyAscii As MSForms.Returninteger)
… Bloco de código associado ao evento KeyPress de CommandButton
… Este evento é reconhecido sempre que o utilizador prime uma tecla
… O procedimento aceita argumentos
End Sub
Procedimentos Sub (Sub-Procedures)
São procedimentos definidos pelo programador, que consistem num
conjunto de instruções executadas sequencialmente com o objectivo de
desempenhar uma tarefa específica.
NotaNota: São designados por procedimentos secundários, isto porque são
normalmente chamados a partir dos procedimentos de evento.
9. Exemplo 1:
Sub FecharExcel()
Application.Caption = “A encerrar…”
Application.Quit
End Sub
Sintaxe de declaração dos procedimentos Sub é:
Sub <Nome_Procedimento> ([argumento1], [argumento2], [...])
[Instrução1]
[Instrução2]
[...]
End Sub
Este procedimento cria um novo procedimento com o nome
«FecharExcel» que simplesmente altera o texto da barra de título da
janela da aplicação e imediatamente termina o Excel.
10. Exemplo 2:
Sub ApresentarTexto(Texto)
Application.Caption = “Texto”
End Sub
Este procedimento aceita um argumento «texto» como sendo uma cadeia de
caracteres. O título da janela da aplicação está dependente do valor desse
argumento.
Procedimentos de Função (Function-Procedures)
São procedimentos definidos pelo programador, que executam tarefas e
retornam um valor para o procedimento que o invocou.
Sintaxe de declaração dos procedimentos de função é:
Function <Nome_Função> ([argumento1], [argumento2], [...])
[Instrução1]
[Instrução2]
[...]
End Function
11. Exemplo:
Sub Calcular()
Resultado=FormulaComplexa(2,7)
Application.Caption=resultado
End Sub
Function FormulaComplexa(num1,num2)
FormulaComplexa=(num1*num2)/(num1+10)
End Function
Este pequeno programa consiste na criação de um procedimento «Calcular» que envia
para o procedimento de função os números 2 e 7. A função realiza o cálculo mediante
estes dois argumentos e devolve o resultado para o procedimento;
Este é depois responsável por alterar o texto da barra de título da aplicação, reflectindo
o valor calculado pela função «FormulaComplexa».
12. Exercício de Aplicação
OjectivoOjectivo: consiste na obtenção do primeiro e último nome do utilizador
através de duas caixas de texto. O evento Click do botão «OK» invocará o
procedimento «portexto», que enviará estes dois argumentos para a função
«Juntar», responsável por retornar o nome completo. Deverá desenhar 3
caixas de texto e um botão de comando até obter um ecrã semelhante ao
apresentado na figura
13. Private Sub CommandButton1_Click()
PorTexto
End Sub
Sub PorTexto()
nome = TextBox1.Text
apelido = TextBox2.Text
completo = juntar(nome, apelido)
TextBox3.Text = completo
End Sub
Function juntar(nome, apelido)
juntar = nome + " " + apelido
End Function
Resolução do Exercício de Aplicação
14. Variáveis – Uma variável é uma localização na memória, na qual são
armazenados dados durante a execução de um programa. Cada variável possui
um nome, um tipo de dados e um conteúdo. O nome da variável é a designação
pela qual a podemos referenciar em módulos de programação. O tipo de dados
define qual o tipo de informação que a variável pode conter (números inteiros,
decimais, cadeias de caracteres alfanuméricas, datas, valores lógicos, etc...). O
conteúdo representa o valor efectivo da variável em qualquer ponto da execução
do programa.
Variáveis
REGRAS DE NOMENCLATURA PARA AS VARIÁVEIS SÃO AS SEGUINTES:
o primeiro caracter deve ser uma letra de A a Z
Não podem conter espaços, pontos finais(.), pontos de exclamação(!) ou os
caracteres @, $, # e &
Não podem exceder 255 caracteres.
São únicas no módulo em que são declaradas.
15. Sintaxe de declaração das variáveis é:
DIM <Nome_variável> [As <tipo de dados>]
Exemplos:
Dim Nome as string
Dim Idade As Integer
Constantes – Uma constante, tal como o próprio nome indica, apresenta as mesmas
características de uma variável, contudo, é declarada de forma diferente e o seu conteúdo
não pode ser alterado durante a execução de um programa.
Sintaxe de declaração das constantes é:
Const <Nome_Constante> As <tipo de dados> = <Valor>
TIPOS DE DADOS
Integer
Long
Single
Double
String
Date
Currency
Byte
Boolean
…..
Constantes
16. Funções
FUNÇÃO MsgBox - Apresenta no ecrã uma caixa de mensagem padrão de
sistema operativo com o ícone e botões especificados. Retorna uma constante
numérica do tipo Integer que contém informação acerca do botão escolhido pelo
utilizador.
SINTAXE:
MsgBox (Prompt, Buttons, Title, Helpfile, Context)
Prompt – Argumento do tipo String, correspondente ao texto que constitui a mensagem a
ser apresentada na caixa de diálogo. O comprimento máximo do texto é de,
aproximadamente, 1024 caracteres, dependendo da largura ocupada pelos mesmos.
Buttons – Argumento opcional que está interligado com a apresentação da própria caixa
no ecrã no que se refere aos icones e tipos de botões apresentados.
Constante Valor
vbCritical 16
vbQuestion 32
vbExclamation 48
vbInformation 64
As constantes utilizadas para a escolha do ícone são:
17. Em relação ao número e tipo de botões:
Constante Valor Descrição
VbOkOnly 0 Apenas o botão OK
VbOkCancel 1 OK e Cancel (Cancelar)
VbAbortRetryIgnore 2 Abort (Abortar), Retry (Repetir) e Ignore (Ignorar)
VbYesNoCancel 3 Yes (Sim), No (Não) e Cancel (Cancelar)
VbYesNo 4 Yes (Sim) e No (Não).
VbRetryCancel 5 Retry (Repetir) e Cancel (Cancelar).
Valores retornados pela função Msgbox:
Constante Valor
VbOk 1
VbCancel 2
VbAbort 3
VbRetry 4
VbIgnore 5
VbYes 6
VbNo 7
18. SINTAXE:
InputBox (Prompt, Title, Default, Xpos, Ypos, Helpfile, Context)
FUNÇÃO InputBox - Apresenta no ecrã uma caixa de mensagem padrão de
sistema operativo que serve para recolher informações do utilizador, sob a forma
de texto. Retorna uma constante do tipo string correspondente ao texto digitado
na caixa de introdução.
Prompt – Argumento obrigatório do tipo String correspondente à mensagem a ser apresentada na
caixa
Title – Argumento opcional do tipo String que define o texto da barra de título da janela.
O texto predefinido corresponde ao nome da aplicação anfitriã, neste caso, «Microsoft Excel».
Default – Argumento opcional do tipo String que representa o texto a aparecer automaticamente na
caixa de introdução.
Xpos – Opcional. Expressão numérica que especifica, em medidas de ecrã (twips), a distância
horizontal entre a extremidade esquerda da caixa de diálogo e o limite esquerdo do ecrã. Se este
argumento for omitido, a caixa é centrada automaticamente na horizontal.
Ypos – Opcional. Expressão numérica que especifica, em medidas de ecrã (twips), a distância
vertical entre a extremidade de topo da caixa de diálogo e o limite superior do ecrã. Se este
argumento for omitido, a caixa é centrada automaticamente na vertical.
19. Condições
A Estrutura If… Then … Else
1º Modo (If…Then)
A condição é testada. Se for verdadeira executa uma única instrução,
após a cláusula Then
Sintaxe
If <condição> Then <instrução>
Exemplo:
If nome=“Ana” Then idade =45
Se a variável “nome” contém a String “Ana”, a variável “idade” ficará
com o valor 45; caso contrário a instrução é ignorada.
20. 2º Modo (If…Then…End If)
A condição é testada. Se for verdadeira, executa um conjunto de
instruções. Quando associamos mais do que uma instrução à cláusula
Then, estamos perante um bloco If … End If, em que If inicia e End If
termina o bloco condicional.
Sintaxe:
If <condição> Then
[instrução1]
[instrução2]
[instrução3]
[instrução4]
[…]
End If
21. Exemplo:
If var1 < 0 Then
Msgbox “Erro”, VbCritical
var1=10
End If
Se a variável «var1» é inferior a zero, será apresentada uma caixa de
mensagem de erro e a variável ficará com o valor de 10
23. Exemplo:
If mensagem = 10 Then
Msgbox “A sua caixa de correio está cheia!”, Vbexclamation
disponivel=0
Else
Este exemplo simula o acesso a uma caixa postal de um telemóvel com
um limite máximo de mensagens igual a 10. Quando o contador do
número de mensagens chega ao limite, o utilizador é alertado desse facto
através de uma caixa de mensagem.
Msgbox “A sua caixa de correio tem” & mensagens & “ mensagens!”
disponivel=10-mensagens
End If
24. Ciclos
A Estrutura Do… Loop
1º Modo (Do… While …Loop)
O ciclo é verificado enquanto a condição especificada for
verdadeira
Sintaxe:
Do While <condição>
[instrução1]
[instrução2]
[…]
Loop