Buscar

Microsoft Excel 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 13 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 13 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 13 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

Microsoft Excel 
Visual Basic para Aplicativos 
 
PROJETO: Sistema de Cadastro 
 
Por Fernando de Carvalho Navarro 
Agosto/2013 
 
 
Microsoft Excel – Visual Basic para Aplicativos 
Projeto Sistema de Cadastro 3 
Projeto Sistema de Cadastro 
Este tutorial tem a finalidade de permitir que você possa criar um projeto em VBA para cadastra-
mento de alunos em cursos de informática. 
Para isto use o arquivo Sistema de Cadastro.xlsm, disponível em sua pasta de arquivos de treina-
mento. Nessa mesma pasta há diversos arquivos de imagem que também serão usados. 
Siga os passos para completar cada atividade do projeto. 
Parte 1: Formulário de Cadastro de Aluno 
1. Vá ao ambiente do VBA e insira um novo UserForm. 
2. Defina, inicialmente, as seguintes propriedades: 
Name: frmCadastroAluno 
Caption: Formulário de Cadastro de Aluno 
Font: Verdana, 10pt 
Height: 300 
Width: 400 
Definir a propriedade Font no formulário fará com que todos os próximos controles já possu-
am essas características de texto. 
3. Desenhe dois botões de comando: Cadastrar e Cancelar. Organize-os na parte inferior do 
formulário (use o menu Formatar  Organizar botões  Inferior). 
 
4. Em seguida defina suas propriedades: 
Name: cmdCadastrar Name: cmdCancelar 
Caption: Cadastrar Caption: Cancelar 
Default: True Cancel: True 
Height: 24 Height: 24 
Width: 72 Width: 75 
 Microsoft Excel – Visual Basic para Aplicativos 
4 Projeto Sistema de Cadastro 
5. Codifique os botões Cadastrar e Cancelar (dê um duplo clique no objeto para codificá-lo): 
Option Explicit 
 
Private Sub cmdCadastrar_Click() 
 Unload Me 
End Sub 
 
 
Private Sub cmdCancelar_Click() 
 End 
End Sub 
6. Teste o formulário pressionando F5 . Feche o formulário pelo botão [x]. 
7. Desenhe 4 controles de Rótulo e 4 controles de Caixa de Texto e defina as propriedades: 
 
Name: lblNome Name: lblTelefone 
Caption: Nome: Caption: Telefone: 
Accelerator: N Accelerator: f 
BackStyle: 0 - fmBackStyleTransparent BackStyle: 0 - fmBackStyleTransparent 
Height: 18 Height: 18 
Width: 54 Width: 54 
TextAlign: 3 - fmTextAlignRight TextAlign: 3 - fmTextAlignRight 
 
Name: lblMatrícula Name: lblIdade 
Caption: Matrícula: Caption: Idade: 
Accelerator: Accelerator: I 
BackStyle: 0 - fmBackStyleTransparent BackStyle: 0 - fmBackStyleTransparent 
Height: 18 Height: 18 
Width: 54 Width: 54 
TextAlign: 3 - fmTextAlignRight TextAlign: 3 - fmTextAlignRight 
 
Name: txtNome Name: txtTelefone 
AutoTab: True AutoTab: True 
TabStop: True TabStop: True 
MaxLength: 40 MaxLength: 20 
SelectionMargin: False SelectionMargin: False 
Height: 18 Height: 18 
Width: 190 Width: 96 
 
Name: txtMatrícula Name: txtIdade 
AutoTab: False AutoTab: True 
TabStop: False TabStop: True 
MaxLength: 0 MaxLength: 2 
SelectionMargin: False SelectionMargin: False 
Height: 18 Height: 18 
Width: 48 Width: 48 
Enabled: False 
Microsoft Excel – Visual Basic para Aplicativos 
Projeto Sistema de Cadastro 5 
8. Desenhe duas Caixas de Seleção e defina as propriedades: 
 
Name: chkPNE Name: chkBolsa 
Caption: Portador de Necessidades Especiais Caption: Bolsa de Estudos 
Accelerator: P Accelerator: B 
BackStyle: 0 - fmBackStyleTransparent BackStyle: 0 - fmBackStyleTransparent 
Height: 18 Height: 18 
Width: 200 Width: 104 
9. Desenhe um controle de Moldura e defina as propriedades: 
 
Name: fraCurso 
Caption: Curso 
Height: 120 
Width: 366 
 
 Microsoft Excel – Visual Basic para Aplicativos 
6 Projeto Sistema de Cadastro 
10. Dentro da moldura desenhe 4 Botões de Opção e defina as propriedades: 
Name: optManhã Name: optTarde 
Accelerator: M Accelerator: T 
Caption: Manhã Caption: Tarde 
Height: 18 Height: 18 
Width: 60 Width: 60 
 
Name: optNoite Name: optSábado 
Accelerator: O Accelerator: S 
Caption: Noite Caption: Sábado 
Height: 18 Height: 18 
Width: 60 Width: 60 
 
11. Certifique-se de desenhar os 4 botões inteiramente dentro da moldura para que façam par-
te do mesmo grupo. Use as ferramentas de tamanho e alinhamento caso necessário. 
12. Desenhe dentro da moldura uma Caixa de Listagem e um controle de Imagem, com as se-
guintes propriedades: 
Name: lstCursos Name: imgCurso 
Font: Verdana, 8 pt BackStyle: 0 - fmBackStyleTransparent 
BoundColumn: 1 BorderStyle: 0 - fmBorderStyleNone 
ColumnCount: 2 PictureAlignment: 2 - fmPictureAlignmentCenter 
ColumnHeads: True PictureSizemode: 1 - fmPictureSizeModeStretch 
ColumnWidths: 124pt Height: 60 
RowSource: BD_Cursos Width: 60 
Height: 90,75 
Width: 240,75 
 
Microsoft Excel – Visual Basic para Aplicativos 
Projeto Sistema de Cadastro 7 
13. Defina a Ordem de Tabulação numa sequência lógica (clique no formulário com o botão di-
reito do mouse e escolha Ordem de Tabulação): 
 
14. Teste novamente o formulário. Use a tecla  Tab para navegar entre os campos e teste 
também o tamanho máximo de caracteres em cada caixa de texto. Clique Cancelar para fe-
char o formulário. 
15. Insira um novo módulo e crie a macro que irá exibir o formulário: 
Option Explicit 
 
Sub Exibir_Form_Cadastro_Aluno() 
 frmCadastroAluno.Show 
End Sub 
16. Na planilha Início, atribua a macro ao botão Cadastrar Aluno: 
 
17. De volta ao ambiente do VBA, você criará agora uma lógica para o funcionamento das caixas 
de seleção Portador de Necessidades Especiais e Bolsa de Estudos: 
a. Quando a caixa Portador de Necessidades Especiais estiver selecionada, a caixa 
Bolsa de Estudos deverá ser selecionada e depois desabilitada. 
b. Quando Portador de Necessidades Especiais for desligada, ela deverá habilitar no-
vamente a caixa Bolsa de Estudos e deixá-la desmarcada. Dê um duplo clique no 
controle chkPNE para abrir o módulo para codificá-lo: 
 Microsoft Excel – Visual Basic para Aplicativos 
8 Projeto Sistema de Cadastro 
Private Sub chkPNE_Click() 
 If chkPNE Then 
 chkBolsa.Value = True 
 chkBolsa.Enabled = False 
 Else 
 chkBolsa.Value = False 
 chkBolsa.Enabled = True 
 End If 
End Sub 
18. Quando o formulário iniciar, o nº de matrícula para o novo aluno que está sendo cadastrado 
deverá aparecer dentro da caixa de texto txtMatrícula (definida originalmente com a pro-
priedade Enabled = False). Dê um duplo clique numa área vazia do formulário para codificar 
o UserForm. Inicialmente o procedimento de evento UserForm_Click() aparecerá na janela 
do código, porém mude o evento na lista de eventos (parte superior direita da janela de 
módulo) para Initialize e escreva o código correspondente: 
Private Sub UserForm_Initialize() 
 txtMatrícula = WorksheetFunction.Max(Range("Alunos!A:A")) + 1 
End Sub 
A linha de código preenche a caixa de texto da matrícula com o próximo número livre, defini-
do como sendo o máximo da coluna A da planilha Alunos, mais um. 
19. Exclua o procedimento UserForm_Click() que não chegou a ser usado. 
20. Como um “toque extra”, faça com que o Excel fique oculto quando o formulário for iniciali-
zado e apareça novamente quando o usuário clicar no botão Cancelar . No código anterior 
acrescente uma linha que altera a propriedade Visible do objeto Application: 
Private Sub UserForm_Initialize() 
 txtMatrícula = WorksheetFunction.Max(Range("Alunos!A:A")) + 1 
 Application.Visible = False 
End Sub 
21. Para que o formulário seja exibido novamente ao término do cadastramento, altere o códi-
go do botão Cancelar : 
Private Sub cmdCancelar_Click() 
 Application.Visible = True 
 End 
End Sub 
22. Volte à planilha Início. Teste o carregamento do formulário para verificar o nº de matrícula 
na caixa de texto correspondente e se o Excel ficará oculto. O efeito será visualizado melhor 
se você minimizar todas as janelas, menos a do Excel. 
OBS: No Windows 7 e Windows 8, quando você segura a janela do aplicativo pela barra de tí-
tulo e “chacoalha” o ponteiro do mouse, todas as demais ficam minimizadas, menos a que 
foi sacudida.Para que retornem ao normal, chacoalhe novamente a janela que está sendo 
visualizada. 
Microsoft Excel – Visual Basic para Aplicativos 
Projeto Sistema de Cadastro 9 
23. O próximo controle a ser codificado será a caixa de listagem lstCursos: 
Private Sub lstCursos_Click() 
 Dim Arq_Imagem As String 
 ' Procura o curso selecionado no intervalo BD_Cursos e traz o valor da 3ª coluna 
 Arq_Imagem = WorksheetFunction.VLookup(lstCursos.Text, Range("BD_Cursos"), 3, 0) 
 ' Concatena o caminho completo desta pasta de trabalho ao nome do arquivo 
 Arq_Imagem = ThisWorkbook.Path & "\" & Arq_Imagem 
 ' Carrega a imagem definida pelo nome do arquivo à propriedade Picture 
 imgCurso.Picture = LoadPicture(Arq_Imagem) 
End Sub 
24. Finalmente o cadastramento poderá ser feito. Codifique o botão Cadastrar . 
Private Sub cmdCadastrar_Click() 
 ' Seleciona a planilha "Alunos" (banco de dados) e acha a 1ª célula livre, abaixo 
 Sheets("Alunos").Select 
 Range("A4").End(xlDown).Offset(1, 0).Select 
 
 ' Preenche as células do novo registro com as informações do formulário 
 ActiveCell(1, 1) = CLng(txtMatrícula) 
 ActiveCell(1, 2) = txtNome 
 ActiveCell(1, 3) = txtTelefone 
 ActiveCell(1, 4) = CLng(txtIdade) 
 ActiveCell(1, 5) = chkPNE 
 ActiveCell(1, 6) = chkBolsa 
 ActiveCell(1, 7) = lstCursos 
 
 ' Verifica qual o período escolhido para armazenar na 8ª coluna da base de dados 
 If optManhã Then 
 ActiveCell(1, 8) = "Manhã" 
 ElseIf optTarde Then 
 ActiveCell(1, 8) = "Tarde" 
 ElseIf optNoite Then 
 ActiveCell(1, 8) = "Noite" 
 ElseIf optSábado Then 
 ActiveCell(1, 8) = "Sábado" 
 Else 
 ActiveCell(1, 8) = "Não Especificado" 
 End If 
 
 ' Finaliza: seleciona a célula A1 e volta à planilha "início" 
 Range("A1").Select 
 Sheets("Início").Select 
 Application.Visible = True 
 Unload Me 
End Sub 
 Microsoft Excel – Visual Basic para Aplicativos 
10 Projeto Sistema de Cadastro 
Parte 2: Formulário de Cadastro de Curso 
25. Insira um novo UserForm, desenhe os controles e modifique as propriedades conforme 
mostrado a seguir: 
 
Name: frmInclusãoCurso 
Caption: Formulário de Inclusão de Curso 
Font: Verdana, 10pt 
Height: 180 
Width: 340 
 
Name: lblNome Name: txtNome 
Caption: Nome do Curso: AutoTab: False 
Accelerator: N TabStop: True 
BackStyle: 0 - fmBackStyleTransparent MaxLength: 30 
Height: 18 SelectionMargin: False 
Width: 96 Height: 18 
TextAlign: 3 - fmTextAlignRight Width: 210 
 
Name: lblPreço Name: txtPreço 
Caption: Preço do Curso: AutoTab: False 
Accelerator: P TabStop: True 
BackStyle: 0 - fmBackStyleTransparent MaxLength: 10 
Height: 18 SelectionMargin: False 
Width: 96 Height: 18 
TextAlign: 3 - fmTextAlignRight Width: 72 
 
Name: lblImagem Name: txtImagem 
Caption: Imagem do Curso: AutoTab: False 
Accelerator: I TabStop: True 
BackStyle: 0 - fmBackStyleTransparent MaxLength: 0 
Height: 18 SelectionMargin: False 
Width: 96 Height: 18 
TextAlign: 3 - fmTextAlignRight Width: 180 
 
 Name: cmdProcurar 
 Caption: … 
 Accelerator: . 
 Font: Consolas, 8 pt 
 Height: 18 
 Width: 24 
 
Microsoft Excel – Visual Basic para Aplicativos 
Projeto Sistema de Cadastro 11 
Name: cmdIncluir Name: cmdFechar 
Caption: Incluir Caption: Fechar 
Default: True Cancel: True 
Height: 24 Height: 24 
Width: 72 Width: 72 
26. Verifique a Ordem de Tabulação: 
 
27. Codifique o botão Fechar : 
Option Explicit 
 
Private Sub cmdFechar_Click() 
 Sheets("Início").Select 
 End 
End Sub 
28. Teste o formulário pressionando F5 . Clique Fechar . 
29. Codifique o botão Incluir : 
Private Sub cmdIncluir_Click() 
 Sheets("Cursos").Select 
 Range("A4").End(xlDown).Offset(1, 0).Select 
 ActiveCell = txtNome 
 ActiveCell.Offset(0, 1) = CSng(txtPreço) 
 ActiveCell.Offset(0, 2) = txtImagem 
End Sub 
30. Na folha normal de Módulo existente, crie uma função que seja capaz de extrair o nome de 
um arquivo do final do texto que contém o seu caminho completo: 
' Esta função extrai o nome do arquivo do final do caminho completo 
Function ExtrairArquivo(Caminho As String) As String 
 ExtrairArquivo = Right(Caminho, Len(Caminho) - InStrRev(Caminho, "\")) 
End Function 
Esta função criada será usada quando o usuário escolher o arquivo de imagem por uma cai-
xa de diálogo. No final da escolha um texto será retornado com o caminho completo do ar-
quivo, incluindo disco, pastas e arquivo. A função deverá extrair tudo o que vier após a últi-
ma ocorrência do caractere “\”. 
 Microsoft Excel – Visual Basic para Aplicativos 
12 Projeto Sistema de Cadastro 
31. No mesmo módulo crie o procedimento que exibirá o formulário de inclusão de curso: 
Sub Incluir_Curso() 
 frmInclusãoCurso.Show 
End Sub 
32. Na planilha Início, atribua o procedimento anterior ao botão Incluir Curso. 
33. Teste o formulário clicando no botão Incluir Curso. Clique Fechar . 
34. Codifique o botão ... (Procurar): 
Private Sub cmdProcurar_Click() 
 Dim Filtro As String 
 ' Define o disco e pasta padrão para acesso aos arquivos 
 ChDrive Left(ThisWorkbook.Path, 1) 
 ChDir ThisWorkbook.Path 
 ' Monta o filtro de arquivos e solicita a escolha do arquivo de imagem 
 Filtro = "Arquivos JPEG (*.jpg), (*.jpg), Arquivos Bitmap (*.bmp), (*.bmp)" 
 txtImagem = ExtrairArquivo(Application.GetOpenFilename(FileFilter:=Filtro, _ 
 FilterIndex:=1, Title:="Importar imagem", MultiSelect:=False)) 
End Sub 
35. Teste novamente o formulário, agora selecionando uma das imagens para o curso que está 
sendo cadastrado. Insira um ou dois cursos novos. 
Parte 3: Formulário de Exclusão de curso 
36. Insira outro UserForm, desenhe os controles e modifique as propriedades conforme mos-
trado a seguir: 
 
Name: frmExclusãoCurso Name: lstCursos 
Caption: Exclusão de Curso Font: Verdana, 8 pt 
Font: Verdana, 10pt BoundColumn: 1 
Height: 180 ColumnCount: 2 
Width: 270 ColumnHeads: True 
 ColumnWidths: 124pt 
 RowSource: BD_Cursos 
 Height: 90,75 
 Width: 240,75 
 
Microsoft Excel – Visual Basic para Aplicativos 
Projeto Sistema de Cadastro 13 
Name: cmdExcluir Name: cmdCancelar 
Caption: Excluir Caption: Cancelar 
Default: True Cancel: True 
Height: 24 Height: 24 
Width: 72 Width: 72 
37. Codifique o botão Cancelar : 
Option Explicit 
 
Private Sub cmdCancelar_Click() 
 Sheets("Início").Select 
 End 
End Sub 
38. Codifique o botão Excluir : 
Private Sub cmdExcluir_Click() 
 Sheets("Cursos").Select 
 ' Remove da base o item cujo nº corresponde ao curso clicado 
 Range("A4").Offset(lstCursos.ListIndex + 1, 0).EntireRow.Delete 
 ' Lê novamente (atualiza) a lista do intervalo "BD_Cursos" 
 lstCursos.RowSource = "BD_Cursos" 
End Sub 
39. No módulo principal, crie o procedimento que fará a chamada ao formulário de Exclusão: 
Sub Exibir_Form_Exclusão_Curso() 
 frmExclusãoCurso.Show 
End Sub 
40. Teste o formulário para excluir um ou dois cursos. 
 
O projeto principal está terminado. Com o tempo e experiência, procure aplicar as seguintes me-
lhorias: 
 No formulário de cadastramento de aluno, quando o usuário clicar no botão Cadastrar , o 
procedimento já existente deverá validar os dados digitados e todos os campos deverão es-
tar preenchidos, a menos das duas caixas de seleção, que são opcionais. 
 Crie um novo formulário frmExclusãoAluno que exiba uma caixa de listagem que mostra 
duas colunas do banco de dados: Matrícula e Nome. O usuário deverá escolher um aluno 
para que seja excluído da base de dados. 
 Nos formulários de exclusão, colocar uma rotina de tratamento de erro quando o usuário 
clicar no botão Excluir sem ter selecionado nenhum item. 
 Crie um novo formulário frmMenu que exibirá botões correspondentes às opções que atu-
almente estão na planilha, mais a opção de exclusão de aluno. Cada botão acionará a macro 
correspondente. O carregamentodeste formulário deverá ser feito automaticamente quan-
do a pasta de trabalho for aberta. O procedimento também ocultará o Excel. Crie também o 
botão Sair que emitirá uma caixa de mensagem perguntando se o usuário realmente dese-
ja sair do sistema. Na confirmação, a pasta de trabalho será fechada, o arquivo salvo e o Ex-
cel visível novamente.

Continue navegando