Buscar

INTRODUÇÃO AO VBA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

IN���D�ÇÃO �� V�A
Para abrir ambiente de trabalho: ALT + F11
Tipo de arquivo a ser salvo: .xslm
1. Aprendendo a escrever código:
1.1. Diferença entre procedimentos Sub x Function: ( Executar procedimento: F5)
sub → Executa um processamento sem emitir qualquer informação, para emitir
informação é necessário acrescentar uma Msgbox. Ex: Gravar macro da planilha.
Function → Quando o processamento necessita devolver algum resultado. Pode ser usada
para criação de função direta na planilha. A exigência para que isso seja possível, é criá-las
com o modificador Public, que é o padrão caso seja omitido.
1.2 Diferença entre macro absoluta e macro relativa:
Absoluta → Mantém a célula de origem ao executar a macro gravada.
Relativa → Começa a macro na célula que está ativa.
1.3 Linguagem do código:
No português escrevemos : Verbo> substantivo. Ativar a planilha
No VBA é o contrário: Objeto > Método. Planilha.ativa
Em analogia, Objeto= Substantivo ( Em quem estou mexendo) e Método= verbo ( O que estou
fazendo).
1.4 Definições:
Objetos: tudo que pode ser mexido - célula, planilha, pasta de trabalho…
Coleções: conj. De objetos.
Worksheets -:> coleção de planilhas - todas as planilhas dentro daquela pasta de trabalho
Range -> coleção de células - todas as células dentro daquela planilha.
Propriedades: Características do objeto .
Ex: Worksheets(1).NAME → Nome da planilha 1 da pasta de trabalho
Métodos: Ações que podem ser feitas no objeto.
Possuem paramentos: Direção, intensidade ...
Ex: worksheets(1).delete → deletar a primeira planilha da pasta de trabalho
^- ordem: a primeira planilha
Para ter acesso a biblioteca de propriedades e métodos : F2
Para depurar o código - executar linha por linha : f8
2. Aplicações:
Sub test()
'Selecionar a primeira planilha da pasta de trabalho'
Worksheets(1).Select
End Sub
Sub test2()
' Selecionar uma planilha específica pelo nome'
Worksheets("Plan1").Select
End Sub
Sub test3()
' Ocultar planilha utilizando sua propriedade(visible)'
Worksheets(1).Visible = False
End Sub
Sub test4()
' Reaparecendo a planilha com a propriedade visible'
Worksheets(1).Visible = True
End Sub
Obs: Na propriedade visible podemos ocultar a planilha de forma a não ser reexibida na pasta
de trabalho, somente no editor de vba ( travar em oculto).
Sub test5()
' Ocultando através do nome do projeto'
Plan1.Visible = xlSheetVeryHidden ( sem poder reexibir)
End Sub
Sub Copiar_transpor()
' Copiar valores das células em A e transpor a partir de B'
Plan1.Range("A1:A12").Copy
Plan1.Range("B1").PasteSpecial xlPasteAll, xlPasteSpecialOperationNone, False, True
' PASTESPECIAL COLAR TUDO, SEM FAZER OPERAÇÃO, COM ESPAÇOS VAZIOS, TRANSPOR'
End Sub
Sub Copiar_transpor2()
' Copiar valores das células em A e transpor a partir de B2'
Plan1.Range("A1:A12").Copy
Plan1.Range("B2").PasteSpecial xlPasteAll, xlPasteSpecialOperationNone, True, True
' PASTESPECIAL COLAR TUDO, SEM FAZER OPERAÇÃO, SEM ESPAÇOS VAZIOS, TRANSPOR'
End Sub
Sub Hierarquia()
' Ordem de hierarquia '
Workbooks("Pasta1").Worksheets(1).Range("A1").Select
End Sub
Sub Exercicio1()
' Crie uma macro que selecione o intervalo A1:B10 utilizando a propriedade range'
Worksheets(1).Range("A1:B10").Select
'ou'
[A1:B10].Select
End Sub
Sub Exercicio2()
'Crie uma macro que selecione o intervalo C2:D4 utilizando a propriedade cells '
Range(Cells(2, 3), Cells(4, 4)).Select
'Cells ( indice da linha, indice da coluna)'
End Sub
Sub Exercicio3()
'Crie uma macro que selecione a celula D4 a partir da A1 utilizando a propriedade o�set
(desloca)'
Range("A1").O�set(3, 3).Select
'o�set(casas para direita; casas para baixo), para esquerda e para cima utiliza-se indices
negativos'
End Sub
Sub Exercicio4()
'Crie uma macro que seleciona o intervalo A1:D5 utilizando a propriedade Resize( aumenta
o intervalo)'
' Aumentando o intervalo de 1 linha e 1 coluna "A1" para um intervalo de 5 linhas e 4
colunas'
Range("A1").Resize(5, 4).Select
End Sub
Sub Exercicio5()
' Crie uma macro que selecione a linha 2'
Rows(2).Select
End Sub
Sub Exercicio6()
' Crie uma macro que selecione a coluna 2'
Columns(2).Select
End Sub
Sub Exercicio7()
'Crie uma macro que seleciona o intervalo do A1 até a celula ativa utilizando a
propriedade Resize( aumenta o intervalo)'
Range("A1").Resize(ActiveCell.Row, ActiveCell.Column).Select
End Sub
3. Interação com usuário
Sub apresentação()
'Mensagem aparecendo ao usuário do excel'
Msgbox " Olá planilheiros!" & Chr(13) & " Seja bem vindo", vbInformation, " Primeiro
contato"
'Msgbox " Mensagem a ser exibida" chr(13)= enter para descer texto, tipo de texto, titulo da
mensagem'
' Mensagem permitindo retorno do usuário'
Plan3.Range("A1") = InputBox(" Então vamos lá?", "Primeiro contato", "sim")
' Lugar onde vou armazenar a informação do usuário = inputbox( " texto a ser exibido",
titulo, resposta programa'
End Sub
4. Aprendendo a declarar variáveis :
Options explict- OBRIGA A DECLARAR TODAS AS VARIAVEIS
Dim nomedavariavel as tipo de variavel
Tipo
Boolean valores booleano - True ou False
BYTE NÚMEROS SEM SINAL ENTRE 0 E 225
CURRENCY MOEDA
DATE DATAS
DECIMAL NUMERO DECIMAL
DOUBLO 4,94 x 10 ^324 PARA VALORES NEGATIVOS E DESDE 1,797693134862 E 398 até 4,94 x 10 ^324 para valores
positivos.
Integer numeros inteiros entre -32768 e 32767
Long numeros inteiros entre milhoes
Object referencia a um objeto do excel
Single numero real desde -3,40 x 10^38 até -1,40 x 10^-40 para negativos, e 3,40 x 10^38 atée 1,40 x 10^-45 para
positivos
String conjunto de caracteres
Variant qualquer tipo de dados( utiliza mais memoria)
Sub declarandovariavel()
Dim Nome As String
Dim Nasc As Date
Dim Atual As Date
Dim Result As Single
Nome = InputBox("Digite o seu nome")
Nasc = InputBox("Digite o seu nascimento, coloque (/)")
Atual = Date
Result = Atual - Nasc
Msgbox " " & Nome & " você está com " & Result & " dias ", vbInformation, " Declarando
variavel"
End Sub
5. Estruturas de decisão:
IF … Then
Com uma condição.
Sub avaliarvencimento()
If Plan2.Range("C2") > Date Then
Plan2.Range("D2") = " Conta a vencer "
ElseIf Plan2.Range("C2") = Date Then
Plan2.Range("D2") = "Vence hoje"
Else
Plan2.Range("D2") = "Conta atrasada"
End If
End Sub
Com duas condições .
If Plan2.Range("C2") > Date And Plan2.Range("A2") = "Luz" Then
Plan2.Range("D2") = " Conta a vencer "
Com uma ou outra condição
If Plan2.Range("C2") > Date OR Plan2.Range("A2") = "Luz" Then
Plan2.Range("D2") = " Conta a vencer "
6. Estruturas de repetição:
For… To
Sub Avaliarsaldo() - ‘ Escreve qual linha é debito e quAL é credito’
Dim i As Integer
Dim UL As Long
'Para descobrir a ultima linha'
UL = Plan2.Cells(Rows.Count, 2).End(xlUp).Row
For i = 10 To UL
' Linha que começa a rodar i=10'
If Plan2.Cells(i, 2) < 0 Then
Plan2.Cells(i, 3) = " debito"
Else
Plan2.Cells(i, 3) = " credito"
End If
Next
End SUB
Sub Limparconteudo()
'Limpar linha que contenha o x'
Dim i As Integer
Dim UL As Long
UL = Plan2.Cells(Rows.Count, 2).End(xlUp).Row
For i = 10 To UL
If Plan2.Cells(i, 4) <>Empty Then
Plan2.Rows(i).ClearContents
Exit for ‘ Para sair do loop’
End If
Next
End Sub
PROJETO FINAL - VBA BASICO
Sub Organizarguiche()
Dim UL As Long
Dim X As Long
Dim senha As Integer
' Senha '
senha = Plan4.[h5]
'Descobrir o ultimo guiche'
UL = Plan4.Cells(Rows.Count, 2).End(xlUp).Row
' Descobrir onde está o X'
X = Plan4.Cells(Rows.Count, 4).End(xlUp).Row
'Colocando X no proximo a realizar atendimento'
If X = UL Then
'Se tiver no ultimo volta para o primeiro'
Plan4.Cells(X, 4) = empyt 'vazio'
Plan4.Cells(5, 4) = "x"
Plan4.Cells(5, 3) = senha
Plan4.[j10] = "Senha" & senha & ". Por favor, comparecer ao guichê de número" &
Plan4.[b5] & ". O atendente " & _
Plan4.[A5] & " irá te atender."
Else
' Para outras situações'
Plan4.Cells(X, 4) = empyt
Plan4.Cells(X + 1, 4) = "x"
Plan4.Cells(X + 1, 3) = senha
Plan4.[j10] = "Senha " & senha & ".Por favor, comparecer ao guichê de número " &
Plan4.Cells(X + 1, 2) & ". O atendente " & _
Plan4.Cells(X + 1, 1) & " irá te atender."
End If
End Sub
Sub chamar()
Application.Speech.Speak (Plan4.[j10]) ‘ EXCEL FALAR ‘
End Sub
INTERFACE GRÁFICA
Aprendendo a utilizar formulários:
Private Sub botao_Click()
‘ Inserindo texto na caixa de texto’
UserForm2.Texto.Text = " Candidatos"
End Sub
Private Sub UserForm_Initialize()
' Private= só ocorre quando o formulario inicializar '
MsgBox " Olá, candidato!. Seja Bem vindo."
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Mensagem quando o formulário fecha'
MsgBox " Boa Sorte!"
Simulando uma calculadora
Private Sub ENTER_Click()
Dim num1 As Long
Dim num2 As Long
‘Calculadora é o nome do formulario’
num1 = Calculadora.N1.Value ‘n1 é a caixa de texto onde o numero será inserido’
num2 = Calculadora.N2.Value’n2 é a caixa de texto onde o numero será inserido’
Calculadora.RESULTADO.Value = num1 * num2
‘ Resultado é o nome do local onde será inserido o resultado ‘
MsgBox " Operação realizada"
End Sub
OBS: PARA VERIFICAÇÃO IMEDIATA
Debug.Print (" Produtos totais: " & prodtotal & " e produtos vendidos: " & prodvendido)
Exemplo:
Número de produtos vendidos e em estoque e atualização da lista
Sub relatorio()
Dim prodvendido As Long
Dim prodtotal As Long
' A quantidade de produtos vendidos recebe a soma das células na coluna c que estão com
SIM '
' Worksheetfunction é utilizado para usar formulas do excel, countif= cont.se'
prodvendido = WorksheetFunction.CountIf(Plan5.Columns("C"), "SIM")
' A quantidade de produtos que existem -1 do cabeçalho'
' CountA= quantidade de células preenchidas'
prodtotal = WorksheetFunction.CountA(Plan5.Columns("A")) - 1
' Atribuindo valores na interface'
UserForm1.Txprodt.Value = prodtotal
UserForm1.Txprodv.Value = prodvendido
' Chamar o formulario'
MsgBox " Analise realizada", vbInformation, " "
UserForm1.Show
End Sub
RESPOSTAS POSSIVEIS NO FORMULÁRIO
Private Sub BNAO_Click()
' Fechar formulario se clicar em NAO'
Unload Me ' Me= este formulario'
End Sub
Private Sub BSIM_Click()
'quantidade de linhas na tabela'
Dim qtlinhas As Long
qtlinhas = WorksheetFunction.CountA(Plan5.Columns("A"))
For cont = 2 To qtlinhas
If Plan5.Cells(cont, 3) = "SIM" Then
Plan5.Rows(cont).ClearContents ' Limpar a linha de produtos vendido'
End If
Next
' chamar a macro para organizar '
Call Organizar - organizar é uma macro para tirar os espaços vazios entre as ceélulas que
sobraram ‘
MsgBox " Operação realizada com sucesso"
End Sub
SOMAR CELULAS
Sub ENTER()
plani6.Show’ PLANI6 é o formulário criado’
End Sub
Private Sub bsomar_Click()
Dim soma As Long
Me.ProgressBar1.Min = 2 ' Minimo da barra de progresso'
Me.ProgressBar1.Max = 10000 ' Maximo da barra de progresso'
For cont = 2 To 10000
' Somar os numeros da coluna 1 + coluna 2 e armazenar na coluna 3'
soma = Plan6.Cells(cont, 1) + Plan6.Cells(cont, 2)
Plan6.Cells(cont, 3).Value = soma
Me.ProgressBar1.Value = cont
Next
MsgBox " Operação realizada!"
Unload Me
End Sub
COMO INSERIR UMA CAIXA DE LISTAGEM.
1- FORMULÁRIO → CAIXA DE LISTAGEM
2- cRIAR UMA BASE DA LISTAGEM EM UMA PLANILHA
3- NOMEAR ITENS DA LISTA CRIANDO UMA TABELA
4- CLICAR NA CAIXA DE LISTAGEM EM USERFORM E NOMEAR o ROWSOURCE com o nome que deu a
tabela.
CADASTRO DE NOVOS ALUNOS
'
Private Sub UserForm_Initialize()
Dim ultimoid As Long
ultimoid = WorksheetFunction.CountA(Plan7.Columns("A")) - 1
Dim ID As Long
ID = ultimoid + 1
Me.txID.Value = ID
Me.Txentrada.Value = Date
End Sub
Private Sub bfechar_Click()
Dim nome As String
nome = Me.Txnome.Value
Dim idade As Long
idade = Me.Txidade.Value
Dim atividade As String
atividade = Me.Txatividade.Value
Dim mensalidade As Long
mensalidade = Me.Txmensalidade.Value
Dim UL As Long
UL = WorksheetFunction.CountA(Plan7.Columns("A"))
Plan7.Cells(UL + 3, 1) = Cadastro.txID.Value
Plan7.Cells(UL + 3, 2) = Date
Plan7.Cells(UL + 3, 3) = nome
Plan7.Cells(UL + 3, 4) = idade
Plan7.Cells(UL + 3, 5) = atividade
Plan7.Cells(UL + 3, 6) = mensalidade
Plan7.Cells(UL + 3, 7) = Date + 30
MsgBox " Cadastro concluído"
Unload Cadastro
End Sub

Continue navegando