Documente Academic
Documente Profesional
Documente Cultură
com VBA
Excel 2013
com VBA
Nome do Aluno
S e n a c S ã o P a u l o – S ã o P a u l o – 2 0 1 3
© Senac São Paulo 2013
Gerência de Desenvolvimento
Luciana Bon Duarte Fantini
Coordenação Técnica
Richard Martelli
Apoio Técnico
Abraão Gomes de Godoy
Paulo Roberto Pereira Dias
Editoração e Revisão
Globaltec Editora Ltda.
Excel 2013 com VBA
SUMÁRIO
CAPÍTULO 1 – MACROS / 7
Introdução / 8
Atividade 1 – Criar uma macro interativa / 8
Gravando uma macro / 10
Executando uma macro / 12
Salvando uma pasta com macros / 13
Atividade 2 – Criando macros com deslocamento relativo / 13
Executando a macro Transporta / 16
Executando uma macro pela guia Desenvolvedor / 16
Excluindo uma macro / 16
Atividade 3 – Segurança de macros / 17
Habilitar macros ao abrir a pasta / 17
Configurando a segurança de macro / 17
Exercício Proposto / 19
Operadores lógicos / 69
Operadores de comparação / 70
Atividade 1 – Verificando se os itens digitados existem / 70
ANEXOS / 119
REFERÊNCIAS BIBLIOGRÁFICAS / 153
CAPÍTULO 1
MACROS
ObJETIvO:
• Apresentar o gravador de macros
Introdução
o curso excel 2013 com vbA foi desenvolvido para usuários que tenham concluído o
curso avançado do excel 2013 ou que possuam conhecimentos equivalentes. Alguns
recursos do excel 2013 serão utilizados no decorrer dos capítulos desta apostila, po-
rém não serão detalhadamente explicados, sendo considerados de conhecimento do
aluno.
Ao final da apostila são apresentados anexos que servirão como material de consulta
para aqueles que desejam avançar em seus conhecimentos relativos ao vbA.
mACroS
As macros são utilizadas para automatizar tarefas que são repetitivas no dia a dia do
usuário, tornando o trabalho do profissional mais ágil e, consequentemente, liberan-
do seu tempo para a realização de outras tarefas.
no excel é possível gravar uma macro rapidamente a partir de uma sequência de
ações realizadas nas planilhas. essas macros são chamadas de macros Interativas e
são criadas utilizando o gravador de macros. também é possível criar uma macro pela
utilização da linguagem de programação vbA (visual basic for Applications) no editor
do vbA, que é um ambiente de programação embutido no excel onde você escreve
um novo código, acrescenta novos procedimentos ao código de uma macro já criada,
executa a depuração de códigos para localizar erros lógicos, de sintaxe ou de tempo
de execução. uma vez que a macro seja criada, é possível associá-la a um objeto para
que seja executada.
nessa atividade você criará uma macro que irá automatizar as tarefas que envolvem
o preenchimento de um relatório demonstrativo do movimento mensal de uma em-
presa. esse relatório contém informações relativas ao período de seis meses. quando
a informação atualizada for recebida, os dados do primeiro mês deverão ser descar-
tados e os novos dados deverão ser incluídos.
2. Caso a guia não esteja presente, clique na guia Arquivo, Opções, Personalizar
Faixa de Opções e habilite a opção Desenvolvedor.
3. Clique em OK. Observe que a guia Desenvolvedor agora está presente na Faixa
de Opções.
4. Abra a pasta Macros.xlsx.
5. Digite os dados de teste: 100 em B9, 200 em B10, 300 em B11 e 400 em B12.
O gravador de macros também pode ser acessado pela Barra de Status no rodapé
do Excel.
12. Finalize a gravação da macro. Clique na guia Desenvolvedor, grupo Código, bo-
tão Parar Gravação. A macro Preenche está pronta para ser utilizada.
1. Para testar a macro que você acabou de gravar, digite valores na área Entrada da
planilha.
2. Execute a macro pressionando as teclas de atalho anteriormente definidas: Ctrl
+ Shift + P.
A macro é executada e todas as ações realizadas na sua gravação são seguidas passo
a passo. Veja o resultado a seguir:
Ao tentar salvar uma pasta de trabalho com extensão .xlsx que contenha uma ou mais
macros, o excel enviará uma mensagem alertando que as macros só serão gravadas
junto com a pasta se o tipo do arquivo for alterado para pasta de Trabalho Habilitada
para Macro do Excel (.xlsm).
1. Clique no botão salvar da Barra de ferramentas de acesso rápido. A seguinte men-
sagem será exibida:
2. escolha o formato correto para salvar a pasta. no campo salvar como tipo esco-
lha a opção pasta de Trabalho Habilitada para Macro do Excel.
3. Selecione o local desejado para armazenar a pasta e mantenha o nome Macros.
o arquivo será salvo com o nome Macros.xlsm.
14. Clique no botão OK. A célula ativa será a primeira célula da última coluna (XFD1).
15. Clique no botão Usar Referências Relativas, do grupo Código, da guia Desenvol-
vedor. Cerifique-se que o botão esteja ativado.
16. Pressione a tecla END e, a seguir, pressione seta para a esquerda. Essa opera-
ção percorre a linha no sentido da seta até encontrar uma célula preenchida,
tornando-a ativa.
17. Pressione a tecla seta à direita para posicionar na primeira célula vazia.
1. Grave uma nova macro, de nome Temporaria, com os comandos que desejar.
2. Execute a macro.
3. Agora você vai excluir a macro Temporaria. No grupo Código clique em Macros.
4. Selecione a macro Temporaria.
5. Clique no botão Excluir.
6. Confirme a exclusão da macro pressionando o botão OK.
7. Salve a pasta.
Exercício Proposto
Criar uma macro que transporte os dados da Entrada para a primeira linha disponível
da lista abaixo.
1. Abra a planilha Exercício Macro.xlsx.
CAPÍTULO 2
VISUAL BASIC FOR
APPLICATIONS (VBA)
ObJETIvO:
• Conhecer os elementos básicos do vbA
Introdução
O Visual Basic é uma linguagem de programação que tem a sua origem no BASIC.
Com ela é possível criar aplicativos autônomos.
O Visual Basic for Applications (VBA) é semelhante ao Visual Basic, mas voltado à pro-
gramação de procedimentos nos objetos criados nos aplicativos do Microsoft Office,
criando rotinas de programação internas e dependentes aos aplicativos não sendo,
portanto, autônomas.
O VBA é útil quando se tem a necessidade de complementar os recursos interativos
disponíveis no aplicativo com os recursos da linguagem de programação, visando
obter o resultado esperado.
menu
barra de ferramentas
janela de Código
janela Propriedades
3. Clique no sinal de expansão que antecede a pasta Módulos e uma lista dos mó-
dulos será apresentada.
Uma pasta de trabalho nova não possui a pasta Módulos. Ao criarmos a primeira ma-
cro, utilizando o gravador de macros, o Excel passa a apresentar a pasta Módulos com
a subpasta Módulo 1, onde é armazenado o código gerado. Quando gravamos mais
de uma macro em uma mesma seção de trabalho, seus códigos também são armaze-
nados na pasta Módulo 1. Se fecharmos a pasta de trabalho e a abrirmos novamente,
o Excel introduz outra pasta de módulo (Módulo 2) para armazenar as novas macros
criadas. A numeração das pastas de módulos é incrementada a cada nova seção de
trabalho. Os módulos podem ser organizados e renomeados pelo desenvolvedor.
Para uma melhor compreensão sobre os elementos que compõem a sintaxe da lin-
guagem VBA, vamos fazer uma analogia com exemplos em nossa linguagem normal.
Se desejamos, por exemplo, solicitar a alguém que abra uma janela, provavelmente
daremos a seguinte ordem:
“Abrir a janela”
Existe um verbo – abrir – e um substantivo – janela.
O VBA é uma linguagem orientada a objetos, ou seja, os objetos (no caso de nossa
linguagem, os substantivos) são mais importantes na composição da ordem. Assim, a
ordem “Abra a janela” poderia ser traduzida como “Janela.Abrir”, no VBA.
Sintaxe
Como em qualquer idioma, as linguagens de programação possuem regras que de-
vem ser seguidas à risca para que possam ser obedecidas.
No VBA indicamos o nome do objeto e separamos com um ponto sua propriedade
ou método.
• NomeDoObjeto.Propriedade = Valor da propriedade
Por exemplo:
Janela.cor = azul
Aqui houve a atribuição de um valor à propriedade do objeto. Essa atribuição é
indicada pelo sinal de igual.
• NomeDoObjeto.Método
Por exemplo:
Janela.abrir
Aqui houve uma ação aplicada ao objeto.
Sintaxe – Hierarquia
Alguns objetos podem estar contidos em outro objeto. Nesse caso é criada uma hie-
rarquia, que deve ser explicitada ao aplicarmos uma propriedade ou método ao ob-
jeto. Por exemplo:
• Casa.Cozinha.Janela.Cor = azul
Nesse caso estamos atribuindo a cor azul à janela da cozinha da casa.
• Casa.Sala.Porta.Abrir
Neste caso estamos abrindo a porta da sala da casa.
Objeto Range
Este objeto pode representar uma célula ou um intervalo.
Referências às células
Referência Significado
Range(“C4”) Célula C4
Range(“A1:B5”) Intervalo de A1 até B5
Range(“C5:D9,G9:H16”) Seleção de dois intervalos
Range(“A:A”) Coluna A
Range(“2:2”) Linha 2
Range(“A:C”) Colunas de A até C
Range(“2:5”) Linhas 2 até 5
Range(“2:2,5:5,8:8”) Linhas 2, 5 e 8
Range(“A:A,C:C,F:F”) Colunas A, C e F
[C4] Célula C4
[A1:C4] Intervalo de A1 até C4
[A1:C5,H6:I8] Intervalos A1 até C5 e H6 até I8
Range(“A2”).Range(“C2”) Célula C3
Cells(4,3) Célula C4
Range(Cells(1,1),Cells(5,5)) Intervalo de A1 até E5
Range(“nome”) Intervalo nomeado como “nome”
[nome] Intervalo nomeado como “nome”
Range(“A1”,ActiveCell) Intervalo de A1 até a célula ativa
ActiveCell Célula ativa
Procedimentos e Funções
Criando um procedimento
Vamos criar um procedimento que escreva SENAC SP na célula E10, na fonte Times
New Roman, tamanho 14, cor Vermelha e Negrito.
1. Feche todas as pastas de trabalho.
2. Abra uma nova pasta e, na guia Desenvolvedor, clique em Visual Basic do grupo
Código. Você também pode pressionar as teclas Alt + F11 para entrar no editor
do VB.
3. No menu Inserir selecione Módulo.
7. Digite a letra S para exibir sugestões que iniciam com essa letra.
Você pode simplesmente digitar Select se não quiser utilizar a sugestão de preen-
chimento.
Você deve digitar o código exatamente como indicado. Caso o VBA localize um erro
nas instruções, ao pressionarmos Enter a linha aparecerá com os caracteres em verme-
lho alertando para o erro. Pode ocorrer de utilizarmos um nome em desacordo com
o objeto, como por exemplo, referência a um intervalo nomeado que não existe ou
atribuir à propriedade Cor da Fonte um nome de fonte inexistente. Essas ocorrências
são detectadas pelo Visual Basic no momento da execução, quando será apresentada
uma mensagem de alerta. Se clicarmos em Depurar, a linha que contém o erro será
realçada em amarelo.
Quando a instrução a ser escrita for muito longa, poderá ser dividida em duas linhas.
No ponto em que quiser mudar de linha, digite um espaço, um sublinhado e então
pressione Enter. Continue a instrução na próxima linha.
9. Na nova linha digite:
ActiveCell.FormulaR1C1 = “SENAC SP”
ActiveCell representa a célula ativa e FormulaR1C1 habilita a célula ativa a receber o
texto entre aspas.
Font é uma das partes que compõem a célula, referindo-se à fonte aplicada. Ou-
tras partes são Borders, referente às bordas, e Interior, referente ao preenchimen-
to da célula.
1. Mantenha o cursor entre as instruções Sub Formata() e End Sub. Para executar a
macro pressione a tecla F5.
Outra forma de executar a macro é por meio da opção Executar Sub/User Form
do menu Executar ou clicando no botão Executar Sub/User Form indicado na
figura abaixo:
Para abreviar a digitação, o VBA oferece a instrução With... End With, que permite
agrupar várias propriedades e métodos aplicados ao mesmo objeto. Compare os
exemplos abaixo que se equivalem.
CAPÍTULO 3
APRESENTAÇÃO DO
PROJETO CONCEITOS
ObJETIvO:
• Apresentar o projeto a ser desenvolvido durante o curso
Uma biblioteca mantém em seu cadastro dados sobre livros, sócios e valores cobra-
dos, além de manter controle do acervo onde são registradas as informações dos em-
préstimos efetuados. A nossa tarefa será automatizar e agilizar o controle do acervo e
dos cadastros de livros e sócios.
• Controle do acervo: ao digitar o código de um dos livros do acervo no campo
apropriado, os campos Nome do livro, Autor, Tipo e Preço serão preenchidos
automaticamente. Ao digitar o Código do Sócio no campo apropriado, o campo
Nome do Sócio é preenchido automaticamente.
Fases de construção
• Fase 1: será criada uma área para digitação de dados relativos ao cadastro de li-
vros e sócios. Serão criados procedimentos para transporte desses dados para a
planilha Biblioteca – dados.
• Fase 2: serão introduzidos aprimoramentos por meio de quadros de diálogo para
confirmação e digitação de dados.
• Fase 3: serão introduzidos botões para executar as macros.
• Fase 4: serão criadas funções para preenchimento automático das colunas da
planilha Biblioteca Circulante quando o código do livro e o código do sócio forem
introduzidos.
• Fase 5: as caixas de digitação de dados serão substituídas por formulários perso-
nalizados.
Um outro projeto, que chamaremos de Projeto Funcionários, será desenvolvido por
você e constituído das mesmas fases.
CAPÍTULO 4
OBJETO WORKSHEET,
PROPRIEDADES SELECT E
OFFSET
ObJETIvOS:
• Apresentar o objeto Worksheet e as propriedades select e offset
• Iniciar a fase 1 do projeto Conceitos
Objeto Worksheet
O objeto Worksheet é aquele que representa a planilha de trabalho.
O objeto Chart é aquele que representa a planilha de gráfico.
O objeto Sheet pode representar tanto uma planilha de trabalho quanto uma planilha
de gráfico.
O conjunto de planilhas de uma pasta de trabalho forma uma coleção. O conjunto de
planilhas forma a coleção Sheets, o conjunto de planilhas de trabalho forma a coleção
Worksheets e o conjunto de planilhas de gráficos forma a coleção Charts.
As coleções também possuem suas próprias propriedades.
Propriedade Significado
Sheets(2) Representa a segunda planilha da pasta de trabalho
ativa.
Sheets(“Biblioteca – dados”) Representa a planilha Biblioteca – dados.
Sheets.Count Retorna o número de planilhas na pasta de trabalho.
Worksheets.Count Retorna o número de planilhas de trabalho na pasta.
Sheets(Sheets.Count) Representa a última planilha da pasta de trabalho.
Charts.Count Retorna o número de planilhas de gráfico na pasta.
Sheets(“Plan3”).Range(“B5”) Representa a célula B5 da planilha Plan 3.
Sheets(3).Name = “Custos” Renomeia a terceira planilha da pasta ativa para
Custos.
ActiveSheet Representa a planilha ativa.
Assim:
Sheets.Count = Worksheets.Count + Charts.Count
Ou seja, o número total de planilhas da pasta de trabalho é igual ao número de plani-
lhas de trabalho na pasta mais o número de planilhas de gráfico na pasta.
‘Copia o formato
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range(“A1:D1”).Select
Selection.Copy
Selection.End(xlDown).Select
Range(ActiveCell, ActiveCell.Offset(0, 3)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.End(xlDown).Select
Sheets(“Entrada”).Select
Caso ocorra erro na execução, clique no botão Depurar e a linha com erro será
realçada em amarelo. Verifique se a digitação das instruções está correta, se os
nomes atribuídos aos objetos correspondem aos nomes digitados na linha de có-
digo ou se as linhas longas foram separadas corretamente utilizando um espaço
e um sublinhado.
5. Salve o arquivo como tipo Pasta de trabalho Habilitada para Macros e feche-o.
Exercício proposto
6. Execute o procedimento.
7. Digite os dados abaixo e execute novamente o procedimento.
8. Salve a pasta alterando o tipo para Pasta de Trabalho Habilitada para Macros.
CAPÍTULO 5
INPUTBOX, MSGBOX,
IF... THEN...ELSE
ObJETIvOS:
• utilizar as caixas de entrada e de mensagens
• utilizar a estrutura condicional IF... THEn... ELsE
• Iniciar a fase 2 do projeto Conceitos
InputBox
InputBox exibe uma caixa de diálogo simples para que você possa inserir informa-
ções que serão utilizadas em uma macro. A caixa de diálogo apresenta um botão OK
e um botão Cancelar. Quando você escolhe o botão OK, o InputBox atribui o valor
inserido na caixa de diálogo a uma variável ou a uma célula indicada. Se clicar no bo-
tão Cancelar, o InputBox atribuirá False ou vazio.
Método InputBox
Sintaxe:
expressão.InputBox(Prompt, [Title], [Default], [Left], [Top], [HelpFile], [HelpContex-
tID], [Type]
onde:
expressão: variável que representa um objeto Application.
Os parâmetros entre colchetes são opcionais.
Nome Descrição
Prompt Mensagem a ser exibida na caixa de diálogo.
Título Título da caixa de entrada. Se for omitido, o título padrão será
“Entrada”.
Default Especifica um valor que aparecerá na caixa de texto quando
a caixa de entrada for inicialmente exibida. Se esse argumen-
to for omitido, a caixa de texto será deixada vazia. Esse valor
pode ser um objeto Range.
Left Especifica uma posição X (em pontos) para a caixa de diálo-
go em relação ao canto superior esquerdo da tela. Um ponto
corresponde a uma unidade de medida que se refere à altura
de um caractere impresso. Um ponto equivale a 1/72 de uma
polegada ou, aproximadamente, 1/28 de um centímetro.
(cont.)
A tabela a seguir mostra os valores que podem ser informados no argumento Type,
podendo ser um deles ou a soma de vários. Por exemplo, para uma caixa de entrada
que possa aceitar tanto texto como números, definimos Type como 1 + 2.
Valor Significado
0 Uma fórmula.
1 Um número.
2 Um texto (sequência de caracteres).
4 Um valor lógico (True ou False).
8 Uma referência a células, como um objeto Range.
16 Um valor de erro, como #N/D.
64 Uma matriz de valores.
Função InputBox
Sintaxe:
InputBox(Prompt, Title], [Default], [XPos], [YPos], [HelpFile Context]
onde:
Xpos corresponde a Left e YPos corresponde a Top.
A diferença entre o método e a função InputBox é que o método permite a entrada
seletiva de valores e a função não.
sub Cadastra_Livro()
sheets(“Biblioteca - dados”).select ‘ seleciona a planilha Biblioteca - dados
range(“a2”).select ‘ seleciona a célula a2
selection.End(xldown).select ‘ procura a última linha preenchida
activeCell.offset(1, 0).select ‘ seleciona a linha seguinte
selection.Entirerow.Insert ‘ insere uma linha
activeCell.offset(-1, 0).select ‘ retorna e seleciona a linha de cima
selection.autoFill destination:=range(activeCell, activeCell.offset(1, 0)), _
Type:=xlFillseries ‘ preenche com o próximo código
activeCell.offset(1, 0).select ‘ desce uma linha
‘Copia o formato
selection.End(xlUp).select ‘ seleciona a primeira linha
activeCell.offset(1, 0).range(“a1:d1”).select ‘ seleciona as 4 colunas desta linha
selection.Copy ‘ copia
selection.End(xldown).select ‘ selciona a última linha
2. Execute o procedimento.
A função MsgBox permite interagir com o usuário por meio de uma caixa de diálogo.
Sintaxe:
MsgBox(prompt [, Buttons] [, Title] [, HelpFile Context]
As definições do argumento Buttons são as seguintes:
• MsgBox(“Mensagem”, VbYesNo+VbCritical+VbDefaultButton2+BvApplicationMo
dal, “Título”)
• MsgBox(“Mensagem”, 4+16+256+0, “Título”)
• MsgBox(“Mensagem”, 276, “Título”)
Prompt é o único parâmetro obrigatório. Portanto, se escrevermos:
• MsgBox(“Mensagem”)
O VBA apresenta uma caixa de diálogo com o botão OK, sem ícone e seu comporta-
mento é VbApplicationModal.
O valor retornado pelo pressionamento de um botão deve ser armazenado em uma
variável. Podemos, assim, analisar o conteúdo da variável e criar código que responda
a esse pressionamento. Você estudará as variáveis mais adiante.
Uso do ElseIf...
Case “Florianópolis”
Estado = “Santa Catarina”
Case Else
Estado = “Outra Capital”
End Select
MsgBox Estado
End Sub
3. Execute a macro.
Você pode utilizar múltiplas expressões ou intervalos em cada cláusula Case. Por
exemplo, as linhas a seguir são válidas:
Case 1 To 4, 7 To 9, 11, 13, Is MaxNumber
Case “tudo”, “nozes” To “sopa”, TestItem
Utilize To para definir intervalo de valores.
Exercício Proposto
4. No final do procedimento mostre uma caixa de diálogo que avise que os dados
foram cadastrados com sucesso.
5. Salve o arquivo.
CAPÍTULO 6
BOTÕES DE
COMANDO
ObJETIvOS:
• utilizar os botões de comando para a execução de macros
• Iniciar a fase 3 do Projeto Conceitos
Exercício Proposto
No Projeto Funcionários você criará um botão que executará a macro criada para o
transporte de dados.
1. Abra a pasta Projeto Funcionários.xlsm.
2. Insira um botão para executar a macro.
CAPÍTULO 7
EVENTOS E VARIÁVEIS
ObJETIvOS:
• utilizar eventos, variáveis e constantes
• Iniciar a fase 4 do Projeto Conceitos
um evento é uma ação reconhecida por um objeto, como clicar o mouse ou pressio-
nar uma tecla e para a qual você pode escrever um código para responder. Podem
ocorrer eventos em resposta a uma ação do usuário ou a um código do programa,
podendo, também, ser acionados pelo sistema.
os eventos de pasta de trabalho ficam armazenados no módulo Estapasta_de_traba-
lho. os eventos de planilha de trabalho ou planilha de gráfico ficam armazenados no
módulo da planilha correspondente.
quando um mesmo módulo serve a planilhas diferentes, você pode criar procedi-
mentos dentro dos módulos padrões e fazer com que os eventos chamem o proce-
dimento.
Para visualizar a lista de todos os eventos da pasta de trabalho siga os passos abaixo:
1. Abra uma pasta de trabalho vazia.
2. Selecione o módulo Estapasta_de_trabalho com um duplo clique.
3. na caixa de combinação objeto selecione Workbook.
Eventos de planilha
Vamos criar um evento de planilha que mostre uma mensagem quando o botão di-
reito do mouse é pressionado. Normalmente quando você clica com o botão direito
do mouse em uma célula é apresentado um menu de contexto. A nossa tarefa será
alterar esse comportamento, mostrando uma mensagem personalizada.
Cancel = True
MsgBox “Você pressionou o botão direito”
em alguns casos necessitamos armazenar uma informação para uso futuro dentro do
procedimento no vbA.
Se o valor armazenado não tiver que ser modificado durante o processamento, uti-
lizaremos as constantes. Os valores que são manipulados e alterados durante o pro-
cessamento são armazenados em variáveis.
Variáveis definidas nas linhas de código normalmente são do tipo Variant, ou seja,
aceitam qualquer tipo de dado, seja texto, número, data, valor lógico, etc.
As variáveis podem ter seu tipo declarado antes de seu uso na linha de código. A ra-
zão é impedir a atribuição de tipos de dados indevidos àquela variável. Outra razão é
que as variáveis utilizam espaços de armazenamento diferentes.
Exemplos de declaração de constantes e variáveis:
ConstNumeroPI As Single = 3,141592654
Public Const Seculo As Integer = 21
Dim StrNome As String
Public StrEstado As String
Se a instrução de declaração aparecer dentro de um procedimento, a variável poderá
ser utilizada somente nesse procedimento. Se a instrução de declaração aparecer na
seção Declarações do módulo, a variável estará disponível para todos os procedimen-
tos dentro do módulo, mas não para procedimentos em outros módulos do projeto.
Para tornar essa variável disponível para todos os procedimentos no projeto, preceda
a declaração com a instrução Public, como no exemplo a seguir:
Public StrNome As String
Tamanho de
Tipo de dados Intervalo
armazenamento
Byte 1 byte De 0 a 255.
Boolean 2 bytes True ou False.
Integer 2 bytes De -32.768 a 32.767.
Long
(número inteiro 4 bytes De -2.147.483.648 a 2.147.483.647.
longo)
De -3,402823E38 a -1,401298E-45 para
Single
valores negativos.
(vírgula flutuante de 4 bytes
De 1,401298E-45 a 3,402823E38 para
precisão simples)
valores positivos.
(cont.)
De -1,79769313486231E38 a
-4,94065645841247E-324 para valores
Double
negativos.
(vírgula flutuante de 8 bytes
De 4,94065645841247E-324 a
precisão dupla)
1,79769313486231E38 para valores
positivos.
Currency
De -922.337.203.685.477,5808 a
(número inteiro em 8 bytes
922.337.203.685.477,5807.
escala)
+/-
79.228.162.514.264.337.593.543.950.335
sem vírgula decimal.
+/-7,9228162514264337593543950335
Decimal 14 bytes com
28 casas decimais à direita
o menor número diferente de zero é
+/-0,0000000000000000000000000001.
String Comprimento da
De 1 a aproximadamente 64.400.
(comprimento fixo) sequência
Variant 22 bytes +
O mesmo intervalo de String de compri-
comprimento da
(com caracteres) mento variável.
sequência
Definido pelo
usuário Número requeri- O intervalo de cada elemento é igual ao
do por elementos intervalo do seu tipo de dados.
(usando Type)
Matrizes de qualquer tipo de dados requerem 20 bytes de memória, mais 4 bytes para
cada dimensão da matriz, mais o número de bytes ocupados pelos próprios dados.
A memória ocupada pelos dados pode ser calculada multiplicando-se o número de
elementos de dados pelo tamanho de cada elemento. Por exemplo: os dados em uma
matriz de dimensão única, que consiste de quatro elementos de dados Integer de
2 bytes cada, ocupam 8 bytes. Os 8 bytes exigidos para os dados, mais os 24 bytes fi-
xos, fazem com que o requisito de memória total para a matriz seja de 32 bytes.
Sub ForaDoEscopo()
MsgBox strMsg
End Sub
Caso você declare uma variável em nível de módulo como pública, ela estará dis-
ponível para todos os procedimentos no projeto. No exemplo a seguir a variável se
sequência de caracteres strMsg pode ser utilizada por qualquer procedimento em
qualquer módulo do projeto.
1. Na caixa de combinação Procedimento escolha (Declaração).
2. Digite o código:
Sub Atualiza_Intervalo()
5. Pressione a tecla Enter. Surge a instrução End Sub
6. Digite o código a seguir:
Atualiza_Intervalo
Application.EnableEvents = True
End If
If Coluna = 5 Then
Application.EnableEvents = False
Cells(Linha, 6) = WorksheetFunction.VLookup(Cells(Linha, Coluna), _
Range(“Socios”), 2)
Application.EnableEvents = True
End If
‘ preenche coluna Atrasado
If Coluna = 7 Or Coluna = 8 Then
Application.EnableEvents = False
If CDate(Cells(Linha, 8)) > CDate(Cells(Linha, 7)) + 7 Then
Cells(Linha, 9) = “Sim”
Cells(Linha, 11) = Cells(Linha, 10) + 2
Else
Cells(Linha, 9) = “Não”
End If
Application.EnableEvents = True
End If
‘aplica bordas
Range(“A7”).CurrentRegion.Borders.LineStyle = xlContinuous
‘aplica estilo moeda
Range(“J7”, Range(“K7”).End(xlDown)).Select
Selection.Style = “Currency”
‘autoajuste da seleção
Columns(“A:K”).AutoFit
End Sub
14. Crie o código para o evento Change. Dê duplo clique no módulo da planilha
Biblioteca circulante.
15. Na caixa de combinação Objeto escolha Worksheet.
16. Na caixa de combinação Procedimento escolha Change.
18. Vá à planilha Biblioteca circulante e digite alguns códigos de livros e sócios para
teste.
19. Salve a pasta Conceitos.xlsm.
Exercício Proposto
5. Salve a pasta.
CAPÍTULO 8
OPERADORES E
CONSISTÊNCIA DOS
DADOS
ObJETIvO:
• Garantir o procedimento correto dos procedimentos
Operadores
Apresentamos a seguir os operadores aritméticos, lógicos e de comparação reconhe-
cidos pelo VBA.
Operadores aritméticos
Operadores lógicos
Operadores de comparação
maior = range(“Livros”).rows.Count
If Cells(Linha, Coluna) < 1 or Cells(Linha, Coluna) > maior Then
Cells(Linha, Coluna).select
MsgBox “Este livro não consta da relação de livros”, vbCritical, “Livro _
inexistente”
application.Undo
application.EnableEvents = True
Exit sub
End If
maior = Range(“Socios”).Rows.Count
If Cells(Linha, Coluna) < 1 Or Cells(Linha, Coluna) > maior Then
Cells(Linha, Coluna).Select
MsgBox “Este sócio não consta da relação de sócios”, vbCritical, “Sócio _
inexistente”
Application.Undo
Application.EnableEvents = True
Exit Sub
End If
CAPÍTULO 9
ESTRUTURAS DE
REPETIÇÃO
ObJETIvO:
• utilizar as estruturas de repetição
Sintaxe:
sub Contador()
dim Lintotal as Long
dim i as Long
dim acumula as Long
Lintotal = Cells(6, 1).Currentregion.rows.Count + 5
For i = 7 To Lintotal
If Cells(i, 1) = “” or Cells(i, 5) = “” Then
acumula = acumula + 1
End If
next
MsgBox “Existem “ & acumula & “linhas incompletas”
End sub
6. execute a macro. verifique a contagem das linhas onde falta um dos códigos ou
os dois.
Sintaxe:
Sub Rel_plan()
Dim plan As Worksheet
For Each plan In Worksheets
ActiveCell = plan.Name
ActiveCell.Offset(1, 0).Select
Next
End Sub
Coleção Workbooks
Coleção Worksheets
Sintaxe:
Do
[instruções]
[Exit Do]
[instruções]
Loop[{While | Until} condição]
contador = contador - 1
End If
contador = contador + 1
Loop
End Sub
4. Digite alguns códigos de livros sem sócios e alguns códigos de sócios sem livros.
5. Execute o procedimento. Confirme a exclusão das linhas incompletas.
Do While condição
Instruções
Executa as instruções entre Do e Loop
Exit Do
enquanto a condição é verdadeira.
Instruções
Loop
Do Until condição
Instruções
Executa as instruções entre Do e Loop até
Exit Do
que a condição seja verdadeira.
Instruções
Loop
Do
Instruções
Executa as instruções uma vez e
Exit Do
enquanto a condição é verdadeira.
Instruções
Loop While condição
Do
Instruções
Executa as instruções uma vez e até que
Exit Do
a condição seja verdadeira.
Instruções
Loop Until condição
O comando Exit Do pode ser usado para interromper uma sequência de instruções,
sendo frequentemente utilizado após a avaliação de alguma outra condição, quando
o comando Exit Do transfere o controle para a instrução imediatamente após o Loop.
CAPÍTULO 10
FORMULÁRIOS
PERSONALIZADOS
ObJETIvO:
• Criar interface amigável para o usuário
Controles:
Incrementa ou decrementa
Botão de rotação SpinButton 1
um valor.
Apresenta uma imagem no
Imagem Image 1...
formulário.
Propriedade Função
Name Nome que utilizamos para referenciar o controle na linha de
código.
AutoSize Definido como True, ajusta o contorno do controle ao texto.
BackColor Define a cor de fundo do controle.
BackStyle Define o estilo de fundo do controle.
BorderColor Define a cor da borda do controle.
BorderStyle Define o estilo da borda do controle.
Caption Define o texto que será exibido no controle.
Enabled Definido como True, torna-se disponível no formulário.
Font Define a fonte do texto exibido.
ForeColor Define a cor do texto exibido.
Height Define a altura do controle em pontos.
Width Define o comprimento do controle em pontos.
Left Define a distância do controle em relação à borda esquerda do
formulário
Top Define a distância do controle em relação à borda superior do
formulário
TabIndex Inicia em zero. Indica a ordem de tabulação dos controles no
formulário. Se esta propriedade não for alterada, a ordem de
tabulação será a ordem de inserção dos controles no formulário.
TabStop Pode assumir os valores True ou False, indicando se o controle
receberá ou não o foco quando a tecla Tab for pressionada.
Visible Definido como True, torna o controle visível no formulário.
Para facilitar a identificação do tipo de controle é costume iniciar seu nome com três
letras que representem seu tipo. Por exemplo: lbl para Rótulos (label), txt para Caixa
de Texto, frm para Formulários, fra para Quadros (frames), etc. Essa convenção é utili-
zada por muitos programadores. No entanto, você pode criar sua própria convenção.
Propriedade Função
Name Propriedade não existente para a Caixa de texto.
Text Atribui ou retorna o texto contido na Caixa de texto.
Value Qualquer valor atribuído à propriedade Text é atribuído a Value.
28. Dê um duplo clique no formulário. Você terá acesso à janela de código do ob-
jeto.
37. Atribuir True à propriedade Cancel habilita o uso da tecla Esc para fechar o for-
mulário.
‘atribui os valores
Codigo = ActiveCell.Offset(-1, 0) + 1 ‘preenche novo código do livro
ActiveCell = Codigo
ActiveCell.Offset(0, 1) = txtTitulo
ActiveCell.Offset(0, 2) = txtAutor
ActiveCell.Offset(0, 3) = lstTipo.List(lstTipo.ListIndex)
‘aplica bordas
ActiveCell.Range(“A1:D1”).Select
Selection.Borders.LineStyle = xlContinuous
Application.EnableEvents = True
‘mensagem de sucesso
msg = Codigo & “ - “ & txtTitulo & “ - “ & txtAutor
msg = msg & “ - “ & lstTipo.List(lstTipo.ListIndex)
MsgBox “O livro foi cadastrado com sucesso:” & vbCrLf & msg, , “Cadastro”
‘zerar os controles
txtTitulo = “”
txtAutor = “”
lstTipo.ListIndex = -1
End Sub
Sub Botão4_Clique
frmCadastraLivro.Show
End Sub
15. Para testar o funcionamento do botão, volte à planilha Biblioteca – dados, clique
no botão criado e cadastre os seguintes livros:
Exercício Proposto
7. Salve o arquivo.
CAPÍTULO 11
FUNÇÕES DEFINIDAS
PELO USUÁRIO
ObJETIvO:
• Criar funções personalizadas
6. Volte à planilha.
7. Na célula A1 digite 81.
8. Na célula A2 digite 4.
9. Na célula A3 digite: =RaizGeral(A1;A2):
os parâmetros optional devem ser colocados por último. não deve existir nenhum
argumento obrigatório após um argumento opcional. o valor do argumento optio-
nal pode ser definido na declaração dos argumentos. no caso da função criada, se o
parâmetro alt for omitido ele assume o valor 1.
5. digite a função Volarea na célula C5 sem o parâmetro opcional.
6. digite a função Volarea na célula C6 com todos os parâmetros.
você também pode utilizar o assistente Inserir função.
Para criar a função Ir vamos considerar a tabela Progressiva para o cálculo mensal do
Imposto sobre a renda da Pessoa física para o exercício de 2012, ano-calendário de
2011.
nos meses de abril a dezembro:
vamos criar uma função que calcule o desconto de Imposto de renda de acordo com
a tabela acima.
1. Abra a pasta Imposto de renda.xlsx.
2. Insira um módulo.
3. digite a função abaixo:
Para separar a parte decimal de um número nas linhas de código você deve usar
o ponto e não a vírgula.
Exercício Proposto
Criar uma função que calcule a hipotenusa quando são informados os catetos de um
triângulo retângulo.
1. Abra uma nova pasta.
2. No Editor do VB insira um novo módulo.
3. Inicie um procedimento Function com o nome Hipotenusa.
4. Defina dois argumentos para a função: Cateto1 e Cateto2.
5. Escreva a fórmula de cálculo:
CAPÍTULO 12
TRATAMENTO DE
ERROS
ObJETIvO:
• utilizar os recursos para tratamento de erros
a instrução On Error
TrataEntrada: ‘rótulo
Instruções de tratamento de erro ‘tratamento de erros prováveis no trecho 1
Resume Next ‘volta à instrução seguinte ao erro
TrataCalculo: ‘rótulo
Instruções de tratamento de erro ‘tratamento de erros prováveis no trecho 2
Resume Next ‘volta à instrução seguinte ao erro
End Sub
Objeto Err
Propriedade Retorno
Err.Clear Limpa explicitamente o objeto Err. O método Clear será chamado
automaticamente sempre que qualquer uma das instruções a seguir
for executada:
• Qualquer tipo de instrução Resume.
• Exit Sub, Exit Function.
• Qualquer instrução On Error.
Err.Description Retorna a descrição do erro.
Err.Number Retorna ou define um valor numérico que especifica um erro.
Number é a propriedade padrão do objeto Err.
Um procedimento deve ser planejado com bastante atenção para que não ocor-
ram erros de lógica durante a execução. Teste o procedimento com dados e re-
sultados conhecidos e efetue as correções, caso os resultados apresentados não
sejam os esperados.
1. No Editor do VB, para exibir a barra de ferramentas Depurar clique no menu Exi-
bir, Barra de ferramentas e Depurar.
Janela Verificação
Exibir a janela Verificação imediata.
imediata
Janela Inspeção de
Exibe a janela Inspeção de variáveis.
variáveis
Exibe a caixa de diálogo Inspeção de
Inspeção de variáveis
variáveis rápida com o valor atual da
rápida
expressão selecionada.
Exibe a caixa de diálogo Chamadas, que lista
as chamadas de procedimentos atualmente
Pilha de chamadas
ativos (procedimentos no aplicativo que foram
iniciados mas não concluídos).
2. Crie um módulo.
3. Abra o arquivo Depurar.txt que está na pasta Atividades.
4. Copie todo o seu conteúdo para o módulo criado. O código contém alguns
erros intencionais.
Sub Capaz()
Dim resp as Variant
resp$ = “”
resp = Application.Input(“Informe sua idade”)
If resp >= 18 Then
Msgbox “Você é capaz”
ElseIf resp >= 16 And resp < 18 then
Msgbox “Você é parcialmente capaz”
Else
Msgbox “Você é incapaz”
End Sub
O erro é motivado pelo fato da variável resp ter sido declarada como Variant e, de-
pois, ser usada como resp$, que define uma variável tipo String.
7. Clique no botão OK e interrompa a execução clicando no botão Redefinir.
8. Delete o caractere $.
9. Pressione F5 para executar novamente o procedimento. A seguinte mensagem
de erro será mostrada:
Nesse caso faltou indicar o final do desvio condicional por meio da instrução End If.
10. Clique no botão OK e interrompa a execução do procedimento.
11. Digite a instrução End If antes da instrução End Sub.
12. Execute novamente o procedimento. A seguinte mensagem de erro será mos-
trada:
Para analisar o resultado de cada instrução e o valor atual das variáveis, você vai utili-
zar o processo de depuração total do procedimento.
1. Clique no menu Depurar.
2. Clique em Depuração Total.
A seta amarela indica a instrução que será executada. O valor da variável resp neste
momento é vazio.
4. Selecione a variável.
5. Clique no botão Inspeção de variáveis rápida.
6. Clique em Cancelar.
9. Clique em OK.
10. Coloque o mouse sobre a variável resp e verifique seu novo valor.
11. Clique no botão Janela de Verificação Imediata, caso ela não esteja visível.
12. Você pode atribuir outros valores às variáveis para testar o procedimento. Cli-
que na Janela Verificação Imediata e digite:
resp = 14
13. Tecle Enter e verifique o novo valor da variável.
14. Continue a depuração até que a mensagem seja exibida.
15. Para testar novos valores arraste a seta amarela até a instrução que atribui o valor
digitado na caixa de mensagem à variável resp.
16. Digite outras idades. Arraste a seta até a instrução indicada anteriormente para
informar cada idade.
17. Encerre a execução do procedimento.
Exercício Proposto
Projeto Funcionários
ANEXOS
anexo a – Eventos
Evento Ocorrência
Workbook_Activate() Quando a pasta de trabalho torna-se
ativa.
Workbook_Deactivate() Quando o foco passa para outra pasta de
trabalho.
Workbook_Open () Quando a pasta de trabalho é aberta
(padrão).
Workbook_BeforeSave(ByVal SaveAsUI as Quando a pasta de trabalho é salva.
Boolean, Cancel as Boolean)
Workbook_BeforePrint(Cancel as boolean) Quando qualquer comando de impressão
é usado.
Workbook_BeforeClose(Cancel as Quando uma pasta de trabalho é fechada.
Boolean)
Workbook_NewSheet(ByVal Sh As Object) Quando uma nova planilha é adicionada
à pasta de trabalho.
Workbook_WindowResize(ByVal Wn As Quando a pasta de trabalho ativa é
Window) redimensionada.
Workbook_WindowActivate(ByVal Wn As Quando qualquer janela da pasta de
Window) trabalho é ativada.
Workbook_WindowDeactivate(ByVal Wn Quando qualquer janela da pasta de
As Window) trabalho é desativada.
Eventos de Planilha
Evento Ocorrência
WorkSheet_Activate() Quando a planilha torna-se ativa.
Evento Ocorrência
Chart_Activate() Quando uma planilha de gráfico é ativada
ou alterada.
Chart_BeforeDoubleClick(ByVal Quando qualquer parte do gráfico é
ElementID As Long, ByVal Arg1 As Long, clicada duas vezes.
ByVal Arg2 As Long, Cancel As Boolean)
Chart_BeforeRightClick(Cancel as Quando um gráfico é clicado com o
Boolean) botão direito do mouse.
Chart_Calculate() Quando um dado é alterado.
Chart_Deactivate() Quando outra planilha torna-se ativa.
Chart_DragOver() Quando um intervalo é arrastado para um
gráfico.
Chart_DragPlot() Quando um intervalo é arrastado e solto
em um gráfico.
Chart_MouseDown(ByVal Button As Long, Quando o mouse está sobre o gráfico e
ByVal Shift As Long, ByVal x As Long, qualquer botão do mouse é pressionado.
ByVal y As Long)
Chart_MouseMove(ByVal Button As Long, Quando o cursor é movido sobre um
ByVal Shift As Long, ByVal x As long, gráfico.
ByVal y As Long)
Chart_MouseUp(ByVal Button As Long, Quando qualquer botão do mouse é
ByVal Shift As Long, ByVal x As Long, liberado estando o cursor sobre o gráfico.
ByVal y As Long)
Chart_Resize() Quando um gráfico é redimensionado.
Chart_Select(ByVal ElementID As long, Quando um elemento do gráfico é
ByVal Arg1 As long, ByVal Arg2 As Long) selecionado.
Chart_SeriesChange(ByVal SeriesIndex As Quando um ponto de dados do gráfico é
Long, ByVal PointIndex As Long) atualizado.
Para gráficos inseridos como objeto, os eventos não estão disponíveis. Você pode tor-
ná-los disponíveis adicionando um módulo de classe e seguindo os passos a seguir:
1. Insira um módulo de classe.
2. Renomeie o módulo para cl_ChartEvents.
3. Insira a linha de código no módulo:
BANCO DE DADOS
BDCONTAR DCOUNT
BDCONTARA DCOUNTA
BDDESVPA DSTDEVP
BDEST DSTDEV
BDEXTRAIR DGET
BDMÁX DMAX
BDMÉDIA DAVERAGE
BDMÍN DMIN
BDMULTIPL DPRODUCT
BDSOMA DSUM
BDVAREST DVAR
BDVARP DVARP
CUBO
MEMBROKPICUBO CUBEKPIMEMBER
CONJUNTOCUBO CUBESET
CONTAGEMCONJUNTOCUBO CUBESETCOUNT
MEMBROCLASSIFICADOCUBO CUBERANKEDMEMBER
MEMBROCUBO CUBEMEMBER
PROPRIEDADEMEMBROCUBO CUBEMEMBERPROPERTY
VALORCUBO CUBEVALUE
DATA E HORA
AGORA NOW
ANO YEAR
DATA DATE
DATA.VALOR DATEVALUE
DATAM EDATE
DIA DAY
DIAS
DIA.DA.SEMANA WEEKDAY
DIAS360 DAYS360
DIATRABALHO WORKDAY
DIATRABALHO.INTL WORKDAY.INTL
DIATRABALHOTOTAL NETWORKDAYS
DIATRABALHOTOTAL.INTL NETWORKDAYS.INTL
FIMMÊS EOMONTH
FRAÇÃOANO YEARFRAC
HOJE TODAY
HORA HOUR
MÊS MONTH
MINUTO MINUTE
NÚMSEMANA WEEKNUM
NÚMSEMANAISO
SEGUNDO SECOND
TEMPO TIME
VALOR.TEMPO TIMEVALUE
ENGENHARIA
BESSELI BESSELI
BESSELJ BESSELJ
BESSELK BESSELK
BESSELY BESSELY
BINADEC BIN2DEC
BINAHEX BIN2HEX
BINAOCT BIN2OCT
BITAND
BITOR
BITXOR
COMPLEXO COMPLEX
CONVERTER CONVERT
DECABIN DEC2BIN
DECAHEX DEC2HEX
DECAOCT DEC2OCT
DEGRAU GESTEP
DELTA DELTA
DESLOCDIRBIT
DESLOCESQBIT
FUNERRO ERF
FUNERRO.PRECISO ERF.PRECISE
FUNERROCOMPL ERFC
FUNERROCOMPL.PRECISO ERFC.PRECISE
HEXABIN HEX2BIN
HEXADEC HEX2DEC
HEXAOCT HEX2OCT
IMABS IMABS
IMAGINÁRIO IMAGINARY
IMARG IMARGUMENT
IMCONJ IMCONJUGATE
IMCOS IMCOS
IMCOSEC
IMCOSECH
IMCOSH
IMCOT
IMDIV IMDIV
IMEXP IMEXP
IMLN IMLN
IMLOG10 IMLOG10
IMLOG2 IMLOG2
IMPOT IMPOWER
IMPROD IMPRODUCT
IMRAIZ IMSQRT
IMREAL IMREAL
IMSEC
IMSECH
IMSENH
IMSENO IMSIN
IMSOMA IMSUM
IMSUBTR IMSUB
IMTAN
OCTABIN OCT2BIN
OCTADEC OCT2DEC
OCTAHEX OCT2HEX
ESTATÍSTICA
BETA.ACUM.INV BETAINV
CONT.NÚM COUNT
CONT.SE COUNTIF
CONT.SES COUNTIFS
CONT.VALORES COUNTA
CONTAR.VAZIO COUNTBLANK
CORREL CORREL
COVAR COVAR
COVARIAÇÃO.P COVARIANCE.P
COVARIAÇÃO.S COVARIANCE.S
CRESCIMENTO GROWTH
CRIT.BINOM CRITBINOM
CURT KURT
DESV.MÉDIO AVEDEV
DESVPAD.A STDEV.S
DESVPAD.N STDEV
DESVPAD.P STDEV.P
DESVPADA STDEVA
DESVPADP STDEVP
DESVPADPA STDEVPA
DESVQ DEVSQ
DIST.BETA BETA.DIST
DIST.BIN.NEG NEGBINOMDIST
DIST.BIN.NEG.N NEGBINOM.DIST
DIST.F F.DIST
DIST.F.CD F.DIST.RT
DIST.GAMA GAMMA.DIST
DIST.HIPERGEOM HYPGEOMDIST
DIST.HIPERGEOM.N HYPGEOM.DIST
DIST.LOGNORMAL LOGNORMDIST
DIST.LOGNORMAL.N LOGNORM.DIST
DIST.NORM.N NORM.DIST
DIST.NORMP.N NORM.S.DIST
DIST.POISSON POISSON.DIST
DIST.QUI CHIDIST
DIST.QUIQUA CHISQ.DIST
DIST.QUIQUA.CD CHISQ.DIST.RT
DIST.T T.DIST
DIST.T.BC T.DIST.2T
DIST.T.CD T.DIST.RT
DIST.WEIBULL WEIBULL.DIST
DISTBETA BETADIST
DISTEXPON EXPONDIST
DISTF FDIST
DISTGAMA GAMMADIST
DISTNORM NORMDIST
DISTNORMP NORMSDIST
DISTORÇÃO SKEW
DISTORÇÃO.P
DISTR.BINOM BINOM.DIST
DISTR.EXPON EXPON.DIST
DISTRBINOM BINOMDIST
DISTT TDIST
EPADYX STEYX
FISHER FISHER
FISHERINV FISHERINV
FREQUÊNCIA FREQUENCY
GAMA
GAUSS
INCLINAÇÃO SLOPE
INT.CONFIANÇA CONFIDENCE
INT.CONFIANÇA.NORM CONFIDENCE.NORM
INT.CONFIANÇA.T CONFIDENCE.T
INT.DISTR.BINOM
INTERCEPÇÃO INTERCEPT
INV.BETA BETA.INV
INV.BINOM BINOM.INV
INV.F F.INV
INV.F.CD F.INV.RT
INV.GAMA GAMMA.INV
INV.LOGNORMAL LOGNORM.INV
INV.NORM NORMINV
INV.NORM.N NORM.INV
INV.NORMP NORMSINV
INV.NORMP.N NORM.S.INV
INV.QUI CHIINV
INV.QUIQUA CHISQ.INV
INV.QUIQUA.CD CHISQ.INV.RT
INV.T T.INV
INV.T.BC T.INV.2T
INVF FINV
INVGAMA GAMMAINV
INVLOG LOGINV
INVT TINV
LNGAMA GAMMALN
LNGAMA.PRECISO GAMMALN.PRECISE
MAIOR LARGE
MÁXIMO MAX
MÁXIMOA MAXA
MED MEDIAN
MÉDIA AVERAGE
MÉDIA.GEOMÉTRICA GEOMEAN
MÉDIA.HARMÔNICA HARMEAN
MÉDIA.INTERNA TRIMMEAN
MÉDIAA AVERAGEA
MÉDIASE AVERAGEIF
MÉDIASES AVERAGEIFS
MENOR SMALL
MÍN MIN
MÍNIMOA MINA
MODO MODE
MODO.MULT MODE.MULT
MODO.ÚNICO MODE.SNGL
ORDEM RANK
ORDEM.EQ RANK.EQ
ORDEM.MÉD RANK.AVG
ORDEM.PORCENTUAL PERCENTRANK
ORDEM.PORCENTUAL.EXC PERCENTRANK.EXC
ORDEM.PORCENTUAL.INC PERCENTRANK.INC
PADRONIZAR STANDARDIZE
PEARSON PEARSON
PERCENTIL PERCENTILE
PERCENTIL.EXC PERCENTILE.EXC
PERCENTIL.INC PERCENTILE.INC
PERMUT PERMUT
PERMUTAS
PHI
POISSON POISSON
PREVISÃO FORECAST
PROB PROB
PROJ.LIN LINEST
PROJ.LOG LOGEST
QUARTIL QUARTILE
QUARTIL.EXC QUARTILE.EXC
QUARTIL.INC QUARTILE.INC
RQUAD RSQ
TENDÊNCIA TREND
TESTE.F F.TEST
TESTE.QUI CHITEST
TESTE.QUIQUA CHISQ.TEST
TESTE.T T.TEST
TESTE.Z Z.TEST
TESTEF FTEST
TESTET TTEST
TESTEZ ZTEST
VAR.A VAR.S
VAR.P VAR.P
VARA VARA
VAREST VAR
VARP VARP
VARPA VARPA
WEIBULL WEIBULL
FINANCEIRA
AMORDEGRC AMORDEGRC
AMORLINC AMORLINC
BD DB
BDD DDB
BDV VDB
CUPDATAANT COUPPCD
CUPDATAPRÓX COUPNCD
CUPDIAS COUPDAYS
CUPDIASINLIQ COUPDAYBS
CUPDIASPRÓX COUPDAYSNC
CUPNÚM COUPNUM
DESC DISC
DPD SLN
DURAÇÃO DURATION
DURAÇÃOP
EFETIVA EFFECT
ÉPGTO ISPMT
ÉPGTO ISPMT
IPGTO IPMT
JUROSACUM ACCRINT
JUROSACUMV ACCRINTM
LUCRO YIELD
LUCRODESC YIELDDISC
LUCROPRIMINC ODDFYIELD
LUCROÚLTINC ODDLYIELD
LUCROVENC YIELDMAT
MDURAÇÃO MDURATION
MOEDADEC DOLLARDE
MOEDAFRA DOLLARFR
MTIR MIRR
NOMINAL NOMINAL
NPER NPER
OTN TBILLEQ
OTNLUCRO TBILLYIELD
OTNVALOR TBILLPRICE
PGTO PMT
PGTOCAPACUM CUMPRINC
PGTOJURACUM CUMIPMT
PPGTO PPMT
PREÇO PRICE
PREÇODESC PRICEDISC
PREÇOPRIMINC ODDFPRICE
PREÇOÚLTINC ODDLPRICE
PREÇOVENC PRICEMAT
RECEBIDO RECEIVED
SDA SYD
TAXA RATE
TAXAJURO
TAXAJUROS INTRATE
TIR IRR
VF FV
VFPLANO FVSCHEDULE
VP PV
VPL NPV
XTIR XIRR
XVPL XNPV
INFORMAÇÃO
CÉL CELL
É.NÃO.DISP ISNA
É.NÃO.TEXTO ISNONTEXT
ÉCÉL.VAZIA ISBLANK
ÉERRO ISERR
ÉERROS ISERROR
ÉFÓRMULA
ÉIMPAR ISODD
ÉLÓGICO ISLOGICAL
ÉNÚM ISNUMBER
ÉPAR ISEVEN
ÉREF ISREF
ÉTEXTO ISTEXT
INFORMAÇÃO INFO
N N
NÃO.DISP NA
PLAN
PLANS
TIPO TYPE
TIPO.ERRO ERROR.TYPE
LÓGICAS
E AND
FALSO FALSE
NÃO NOT
OU OR
SE IF
SEERRO IFERROR
SENÃODISP
VERDADEIRO TRUE
XOR
MATEMÁTICAS E TRIGONOMÉTRICAS
ABS ABS
ACOS ACOS
ACOSH ACOSH
ACOT
ACOTH
AGREGAR AGGREGATE
ALEATÓRIO RAND
ALEATÓRIOENTRE RANDBETWEEN
ARÁBICO
ARRED ROUND
ARREDMULTB.MAT
ARREDONDAR.PARA.BAIXO ROUNDDOWN
ARREDONDAR.PARA.CIMA ROUNDUP
ASEN ASIN
ASENH ASINH
ATAN ATAN
ATAN2 ATAN2
ATANH ATANH
BASE
COMBIN COMBIN
COMBINA
COS COS
COSEC
COSECH
COSH COSH
COTH
DECIMAL
EXP EXP
FATDUPLO FACTDOUBLE
FATO FACT
GRAUS DEGREES
ÍMPAR ODD
INT INT
ISO.TETO ISO.CEILING
LN LN
LOG LOG
LOG10 LOG10
MARRED MROUND
MATRIZ.DETERM MDETERM
MATRIZ.INVERSO MINVERSE
MATRIZ.MULT MMULT
MDC GCD
MMC LCM
MOD MOD
MUNIT
MULTINOMIAL MULTINOMIAL
PAR EVEN
PI PI
POTÊNCIA POWER
PRODUTO PRODUCT
QUOCIENTE QUOTIENT
RADIANOS RADIANS
RAIZ SQRT
RAIZPI SQRTPI
ROMANO ROMAN
SEC
SECH
SEN SIN
SENH SINH
SINAL SIGN
SOMA SUM
SOMAQUAD SUMSQ
SOMARPRODUTO SUMPRODUCT
SOMASE SUMIF
SOMASÉRIE SERIESSUM
SOMASES SUMIFS
SOMAX2DY2 SUMX2MY2
SOMAX2SY2 SUMX2PY2
SOMAXMY2 SUMXMY2
SUBTOTAL SUBTOTAL
TAN TAN
TANH TANH
TETO.MAT
TRUNC TRUNC
PESQUISA E REFERÊNCIA
ÁREAS AREAS
COLS COLUMNS
COLUNA COLUMN
CORRESP MATCH
DESLOC OFFSET
ENDEREÇO ADDRESS
ESCOLHER CHOOSE
FÓRMULATEXTO
HIPERLINK HYPERLINK
ÍNDICE INDEX
INDIRETO INDIRECT
INFODADOSTABELADINÂ-
GETPIVOTDATA
MICA
LIN ROW
LINS ROWS
PROC LOOKUP
PROCH HLOOKUP
PROCV VLOOKUP
RTD RTD
TRANSPOR TRANSPOSE
TEXTO
ARRUMAR TRIM
BAHTTEXT BAHTTEXT
CARACT CHAR
CARACTUNICODE
CÓDIGO CODE
CONCATENAR CONCATENATE
DIREITA RIGHT
ESQUERDA LEFT
EXATO EXACT
EXT.TEXTO MID
FIXO FIXED
MAIÚSCULA UPPER
MINÚSCULA LOWER
MOEDA DOLLAR
MUDAR REPLACE
NÚM.CARACT LEN
PESQUISAR SEARCH
PRI.MAIÚSCULA PROPER
PROCURAR FIND
REPT REPT
SUBSTITUIR SUBSTITUTE
T T
TEXTO TEXT
TIRAR CLEAN
UNICODE
VALOR VALUE
VALORNUMÉRICO
WEB
CODIFURL
FILTROXML
SERVIÇOWEB
xlDialogConditionalFormatting
source_refs, function_num, top_row, left_
xlDialogConsolidate
col, create_links
xlDialogCopyChart size_num
xlDialogCopyPicture appearance_num, size_num, type_num
xlDialogCreateNames top, left, bottom, right
xlDialogCreatePublisher file_text, appearance, size, formats
xlDialogCustomizeToolbar category
xlDialogCustomViews
xlDialogDataDelete
xlDialogDataLabel show_option, auto_text, show_key
rowcol, type_num, date_num, step_value,
xlDialogDataSeries
stop_value, trend
xlDialogDataValidation
name_text, refers_to, macro_type, short-
xlDialogDefineName
cut_text, hidden, category, local
style_text, number, font, alignment, bor-
xlDialogDefineStyle
der, pattern, protection
style_text, attribute_num, additional_def_
xlDialogDefineStyle
args, ...
xlDialogDeleteFormat format_text
xlDialogDeleteName name_text
xlDialogDemote row_col
formulas, gridlines, headings, zeros, co-
xlDialogDisplay lor_num, reserved, outline, page_breaks,
object_num
cell, formula, value, format, protection,
xlDialogDisplay
names, precedents, dependents, note
validation_num, multiline_logical, vs-
xlDialogEditboxProperties
croll_logical, password_logical
color_num, red_value, green_value, blue_
xlDialogEditColor
value
xlDialogEditDelete shift_num
edition_type, edition_name, reference,
xlDialogEditionOptions
option, appearance, size, formats
series_num, name_ref, x_ref, y_ref, z_ref,
xlDialogEditSeries
plot_order
xlDialogImportTextFile
xlDialogInsert shift_num
xlDialogInsertHyperlink
xlDialogInsertNameLabel
object_class, file_name, link_logical, dis-
xlDialogInsertObject play_icon_logical, icon_file, icon_num-
ber, icon_label
xlDialogInsertPicture file_name, filter_number
chart, y_primary, x_primary, y_secondary,
xlDialogInsertTitle
x_secondary
xlDialogLabelProperties accel_text, accel2_text, 3d_shading
range, link, drop_size, multi_select, 3d_
xlDialogListboxProperties
shading
macro_name, description, menu_on,
menu_text, shortcut_on, shortcut_key,
xlDialogMacroOptions
function_category, status_bar_text, help_
id, help_file
to_recipients, cc_recipients, bcc_reci-
xlDialogMailEditMailer
pients, subject, enclosures, which_address
name_text, password_text, download_lo-
xlDialogMailLogon
gical
xlDialogMailNextLetter
type_num, stack, 100, vary, overlap, drop,
xlDialogMainChart
hilo, overlap%, cluster, angle
xlDialogMainChartType type_num
xlDialogMenuEditor
xlDialogMove x_pos, y_pos, window_text
xlDialogNew type_num, xy_series, add_logical
xlDialogNewWebQuery
xlDialogNote add_text, cell_ref, start_char, num_chars
xlDialogObjectProperties placement_type, print_object
xlDialogObjectProtection locked, lock_text
file_text, update_links, read_only, format,
prot_pwd, write_res_pwd, ignore_rorec,
xlDialogOpen file_origin, custom_delimit, add_logical,
editable, file_access, notify_logical, con-
verter
xlDialogPivotCalculatedItem
xlDialogPivotClientServerSet
xlDialogPivotFieldGroup start, end, by, periods
name, pivot_field_name, new_name,
xlDialogPivotFieldProperties
orientation, function, formats
xlDialogPivotFieldUngroup
xlDialogPivotShowPages name, page_field
xlDialogPivotSolveOrder
xlDialogPivotTableOptions
type, source, destination, name, row_
xlDialogPivotTableWizard grand, col_grand, save_data, apply_auto_
format, auto_page, reserved
xlDialogPlacement placement_type
range_num, from, to, copies, draft, pre-
view, print_what, color, feed, quality,
xlDialogPrint
y_resolution, selection, printer_text, print_
to_file, collate
xlDialogPrinterSetup printer_text
xlDialogPrintPreview
xlDialogPromote rowcol
xlDialogProperties title, subject, author, keywords, comments
contents, windows, password, objects,
xlDialogProtectDocument
scenarios
xlDialogProtectSharing
xlDialogPublishAsWebPage
default_logical, cancel_logical, dis-
xlDialogPushbuttonProperties miss_logical, help_logical, accel_text,
accel_text2
font_num, name_text, size_num, bold,
xlDialogReplaceFont italic, underline, strike, color, outline,
shadow
recipients, subject, message, route_num,
xlDialogRoutingSlip
return_logical, status_logical
height_num, reference, standard_height,
xlDialogRowHeight
type_num
xlDialogRun reference, step
document_text, type_num, prot_pwd,
xlDialogSaveAs
backup, write_res_pwd, read_only_rec
xlDialogSaveCopyAs document_text
xlDialogSaveNewObject
document_text, type_num, prot_pwd,
xlDialogSaveWorkbook
backup, write_res_pwd, read_only_rec
xlDialogSaveWorkspace name_text
xlDialogWorkbookNew
xlDialogWorkbookOptions sheet_name, bound_logical, new_name
xlDialogWorkbookProtect structure, windows, password
xlDialogWorkbookTabSplit ratio_num
xlDialogWorkbookUnhide sheet_text
xlDialogWorkgroup name_array
fixed, decimals, r1c1, scroll, status,
formula, menu_key, remote, entermove,
xlDialogWorkspace
underlines, tools, notes, nav_keys, menu_
key_action, drag_drop, show_info
xlDialogZoom magnification
REFERÊNCIAS BIBLIOGRÁFICAS
jelen, b. e SYrStAd, t. VBa e Macros: Microsoft Excel 2010. rio de janeiro, Alfa books, 2012.
mAnzAno, j. A. n.G. e mAnzAno, A. l. n.G. Excel 2013 avançado. São Paulo, editora érica, 2013.