Baixe o app para aproveitar ainda mais
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
Compartilhar