Escolar Documentos
Profissional Documentos
Cultura Documentos
Excel VBA
Excel VBA
Autoria
Esta apresentação foi desenvolvida por Ricardo Campos, docente da Unidade Departamental de
Tecnologias de Informação e Comunicação do Instituto Politécnico de Tomar. Encontra-se
disponível na página web do autor [http://www.ccc.ipt.pt/~ricardo], no link Publications - Syllabus,
ao abrigo da seguinte licença:
Bibliografia
Recursos:
M.J.Sousa
“Domine a 110% Excel 2010”
FCA – Editora de Informática
A.Carvalho
“Exercícios Resolvidos com Excel para Economia & Gestão”
FCA – Editora de Informática
Bibliografia
Júlio Battisti
http://www.juliobattisti.com.br/cursos/excelavancado/modulo5.asp
http://www.juliobattisti.com.br/cursos/excelavancado/modulo6.asp
Nota: Não é possível garantir a existência futura dos endereços (URL’s), citados nos recursos on-line. Como se sabe, os endereços
são virtuais e a sua vida útil depende única e exclusivamente dos seus autores e proprietários.
História do VBA
• Não é necessária nenhuma instalação extra para ter acesso ao VBA. Basta:
Apresenta as propriedades do
projecto seleccionado.
Propriedades do objecto
(View-Properties)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Programação em Visual Basic for Applications & Excel
História
Menu Programador
Editor VBA
Painel de Código
Código (View-Code)
Painel do Projecto
• Mais: http://www.juliobattisti.com.br/cursos/excelavancado/modulo6.asp
Hierarquia de Objectos
Application
Workbooks
Worksheets
Range
• Propriedades;
• Métodos;
• Eventos;
Propriedades
Exemplo: Worksheets(“Folha1).Range(“A9”).Value = 5
Métodos
Exemplo: Range(“A9”).Select
Eventos
Para que um objecto possa reagir a um dado evento deverá existe o event
handler (tratador de eventos), que especifica o que fazer caso esse evento
ocorra.
Sem isso, o objecto detectará esse acontecimento mas não saberá o que
fazer. Nenhuma resposta será produzida;
MsgBox
• MsgBox: mostra uma mensagem no Excel.
Sintaxe: MsgBox (mensagem, características, título)
MsgBox
Sintaxe: variável = MsgBox (mensagem, características, título)
VbOk 1
VbCancel 2
VbAbort 3
VbRetry 4
VbIgnore 5
VbYes 6
VbNo 7
InputBox
Pesquisador de Objectos
• Relacionais
= (igual); <> (diferente); > (maior); >= (maior ou igual); < (menor); <=
(menor ou igual)
• Lógicos
And; Or; Not
• Texto
& (concatenação)
• Outros Caracteres
‘ (linha de comentários)
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Programação em Visual Basic for Applications & Excel
Operadores
Variáveis
Arrays
Constantes
Type DadosPessoais
Nome As String
Idade As Integer
Nasc As Date
CC As Long
End Type
MsgBox Pessoa.Nome & Chr(13) & "Data de Nascimento: " & Pessoa.Nasc
& Chr(13) & “CC: " & Pessoa.CC
Noção de Array
Declaração de Arrays
Arrays Multi-Dimensionais
2012 2013
CDs 200 40
DVDs 300 100
arr(1,1) = 200
arr(1,2) = 40
arr(2,1) = 300
arr(2,2) = 100
Arrays de Arrays
Select Case
If – Then
As estruturas de controlo repetitivo permitem efectuar testes a condições para,
em função do resultado, executar determinadas instruções;
If condicao Then
Instruções
End If
Select Case
If – Then – Else
Select Case
If condicao1 Then
Instruções1
Else
If condicao2 Then
Instruções2
Else
Instruções3
End If
End If
Select Case
Select Case
Select Case
Select Case
For
While
As estruturas de repetição permitem executar conjuntos de instruções de forma
cíclica;
For
While
For
For-To-Next
• Repete um número de instruções um determinado número de vezes.
For
For-To-Next
For
For-Each-In-Next
• Repete um número de instruções um determinado número de vezes.
For
For-Each-In-Next
• Exemplo. Suponha que se pretende ocultar todas as linhas (entre o range C1 e
C10) que contenham o valor 0
Sub hide_zero()
End Sub
Funções de Data/Hora
Funções de Texto
• Len(string)
Determina o tamanho da String que foi passada como parâmetro para a
função. Exemplo: MsgBox Len("Este é um exemplo de uso da função Len !!")
retorna 41 caracteres;
• Lcase(string)
Converte para minúsculas, a String que foi passada como parâmetro para a
função;
• UCase(string)
Converte para MAIÚSCULAS, a String que foi passada como parâmetro para
a função
Funções de Data/Hora
Funções de Texto
• Left(string,n)
Retorna um número especificado de caracteres, a partir do início de uma
String. Note que espaços também são considerados;
• Right(string,n)
Retorna um número especificado de caracteres, a partir do fim de uma String.
Note que espaços também são considerados;
• Mid(String, posicao_inicio, n)
Retorna um número especificado de caracteres, a partir de uma posição
especificada, dentro da String. Note que espaços também são considerados;
• String(n, caracter)
Retorna um determinado caractere, um número especificado de vezes.
Exemplo: MsgBox String(35,"*")
Funções de Data/Hora
Funções de Data/Hora
• Date()
Retorna a data atual do sistema. Exemplo: MsgBox "Data do Sistema: " &
Date()
• Time()
Retorna a hora atual do sistema. Exemplo: MsgBox "Data do Sistema: " &
Time()
• Day(data)
Recebe como parâmetro uma data, e retorna um número entre 1 e 31,
indicando o dia do mês.;
• Month(data)
Recebe como parâmetro uma data, e retorna um número entre 1 e 12,
indicando o mês do ano.
Funções de Data/Hora
Funções de Data/Hora
• Now()
Retorna a hora e a data atual do sistema. Exemplo: MsgBox "Data e Hora do
Sistema: " & Now()
• MonthName()
Recebe como parâmetro um número, indicativo do mês do ano (1 - Janeiro, 2
- Fevereiro, e assim por diante). Exemplo: MsgBox "Mês do ano: " &
MonthName(Month(Date))
Funções de Data/Hora
Funções de Data/Hora
• Year(data)
Recebe como parâmetro uma data, e retorna o ano.
Exemplo: MsgBox "Ano atual: " & Year(Date( ))
Tipos de Procedimentos
• Sub-rotinas (macros);
• Funções;
• Habilitar as macros;
Ficheiro – Opções – Centro de Fidedignidade – Definições do Centro;
• Uma vez escrita a macro, é necessário guardar o livro de excel com o tipo:
• Programando em VBA;
Testar a Macro
• É possível criar uma macro a partir do zero sem utilizar o gravador de macros;
Âmbito do Procedimento
Exemplos de Sub-Rotinas
sub First()
Range("A1").Value = 34
Range("A2").Value = 66
Range("A3").Formula = "=A1+A2"
Range("A1").Select
End Sub
• Run - Run;
Exemplos de Sub-Rotinas
Exemplo 2: Com recurso ao gravador de macros, crie uma macro (“Limpar”) que
permita apagar o conteúdo de qualquer célula. Posteriormente edite a macro de
forma a introduzir uma MsgBox que obrigue o utilizador a confirmar a acção
Sub Limpar()
If MsgBox("Tem a certeza?", vbYesNo + vbQuestion, "Confirmação") = vbYes Then
Selection.ClearContents
End If
End Sub
Exemplos de Sub-Rotinas
Sub Soma()
Dim x As Integer
Dim Y As Integer
Dim Soma As Integer
Soma = x + Y
MsgBox "Soma de " & x & "+" & Y & "=" & Soma
End Sub
Exemplos de Sub-Rotinas
Exemplo 4: Pretende-se criar uma macro com o nome “Celula” que possibilite a
introdução de um texto numa célula à escolha do utilizador;
Sub Celula()
Dim Cell As String
Dim Texto As String
ActiveSheet.Range(Cell) = Texto
End Sub
Protecção de Macros
Noção de Função
• Conjunto de declarações que retornam um valor;
• A função pode ser chamada noutra parte do código das três seguintes formas:
Variavel = nomeFunção (a, b) //Se a função retorna um valor
Call nomeFunção (a,b) //pode-se chamar uma função ou macro com Call
nomeFunção a, b //se Call não for utilizada os parêntesis não são usados
© Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Programação em Visual Basic for Applications & Excel
Procedimentos
Sub-Rotinas (Macros)
Funções
• As funções têm uma variável com o mesmo nome da função para retornar o
valor. As sub-rotinas não;
• Insert - Module;
• Insert - Function;
Passagem de Parâmetros
A passagem de parâmetros para uma função pode ser feita de duas formas:
• ByVal: indica que o parâmetro é passado por valor. Isto significa que a função
utiliza uma cópia interna dos parâmetros
a = 100
b = 400
Imprime valores a e b
Mult a, b //Chama o procedimento
Imprime valores a e b
Exemplos de Funções
Debug de Funções