18
Projeto VBA Cadastro de instrumentos musicais

Projeto VBA - Cadastro de Instrumentos Musicais

Embed Size (px)

DESCRIPTION

Tutorial VBA ensinando a realizar um cadastro.

Citation preview

Projeto VBACadastro de instrumentos musicais

Aluno: Tárcio Luna

Nosso programa em VBA, consiste em um sistema para cadastro de produtos de uma loja de instrumentos musicais. Nele será possível fazer a inclusão de novos produtos, definido seu código, o nome, que tipo de instrumento é, a marca do fabricante, seu preço, a quantidade, e por fim escrever alguma observação sobre o produto.

Também é possível editar os excluir algum produto depois de cadastrado. Assim como imprimir, ou fazer uma busca entre muitos registros. Foi criada também uma área para backup, onde o usuário informa onde deve ser feita a cópia e o nome do arquivo. É um sistema simples que serve para auxiliar na administração de uma loja de instrumentos musicais.

A seguir mostraremos um passo a passo da utilização do programa:

Tela de login do sistema

Nessa tela o usuário irá entrar com seu nome e senha para ter acesso ao sistema, lembrando que o nome e senha já deverão estar cadastrados. Caso o usuário não esteja cadastrado será mostrada uma tela de erro com a seguinte mensagem:

A senha também pode não conferir com a cadastrada, então será mostrada a seguinte tela:

Se ocorrer algum desses casos, procure digitar um usuário e senha existente. Quando o login e senha estiverem corretos será apresentada uma tela de boas vindas com o nome do usuário:

Após ser validado no sistema será exibida a tela de menu, onde será possível acessar a área de cadastro de produtos ou sair do sistema:

Ao clicar em cadastro de produtos, a tela de cadastro será mostrada, aqui é onde poderemos fazer a inclusão, alteração ou exclusão de produtos. Também poderemos fazer uma consulta a um produto existente ou somenter imprimir.

Usado para incluir novos registros

Usado para alterar registros já existentes

Usado para excluir registros existentes

Usado para cancelar uma operação de inclusão ou alteração

Usado para buscar um registro específico dentro de toda base de dados

Usado para gravar a operação de inclusão ou alteração de registros

Usado para imprimir o registro atual

As opções da tela de cadastro são muitas, vamos analisá-las uma a uma. Na parte superior da tela temos a barra de navegação, nela podemos navegar pelos registros, indo ao próximo ou anterior, e também pulando para o primeiro ou último registro.

Na área inferior da tela, temos os botões:

E o último botão é o sair, usado para sair da tela de cadastro

Na tela de cadastro, na parte inferior direita, é exibido o status da operação, ou seja, qual operação você está fazendo no momento:

Ao clicarmos no botão de consulta, será apresentada a janela de consulta, onde deveremos informar por qual campo iremos fazer a busca, e depois digitar o que estamos procurando:

Na parte superior da tela temos duas “abas”, a de CADASTRO, que é onde estamos agora, e a de BACKUP, que é a que iremos clicar:

Após clicarmos na aba BACKUP, será exibida a tela de backup, onde devermos informar o caminho e o nome do arquivo do backup, exemplo “c:\backup\backup2005.xls”. Após colocar o caminho é só clicar no botão backup que a cópia do seu arquivo será feita no caminho indicado:

Código VBA

Frm_Login

Private Sub UserForm_Activate() Application.Visible = False TBx_Senha.Enabled = TBx_Usuario.Text <> "" CBt_Ok.Enabled = (TBx_Usuario.Text <> "" And TBx_Senha.Text <> "")End Sub

Private Sub CBt_OK_Click() Dim Linha As Integer On Error GoTo NaoEncontrado Linha = Sheets("Login").Range("A:A").Find(TBx_Usuario).Row If TBx_Senha = Sheets("Login").Cells(Linha, 2) Then MsgBox "Bem Vindo " & TBx_Usuario Unload Me Frm_Menu.Show Else MsgBox "A senha não confere" TBx_Senha = "" TBx_Senha.SetFocus End If Exit SubNaoEncontrado: MsgBox "Usuário não cadastrado." TBx_Usuario = "" TBx_Usuario.SetFocusEnd Sub

Private Sub TBx_Usuario_Change() TBx_Senha.Enabled = TBx_Usuario.Text <> "" CBt_Ok.Enabled = (TBx_Usuario.Text <> "" And TBx_Senha.Text <> "")End Sub

Private Sub TBx_Senha_Change() CBt_Ok.Enabled = (TBx_Usuario.Text <> "" And TBx_Senha.Text <> "")End Sub

Frm_Menu

Private Sub CBt_CadProduto_Click() Frm_Cadastro.ShowEnd Sub

Private Sub CBt_Finalizar_Click() Unload MeEnd Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If MsgBox("Confirma a finalização do sistema?", vbYesNo + vbQuestion, "Confirmação") = vbYes Then ActiveWorkbook.Save Application.Quit Application.Visible = True Else Cancel = 1 End IfEnd Sub

Frm_Cadastro

Option Explicit

'RA = REGISTRO ATUAL'NR = NUMERO TOTAL DE REGISTROS'OP = OPERAÇÃODim RA As Integer, NR As Integer, OP As String

Private Sub CBt_backup_Click() ActiveWorkbook.SaveCopyAs (TBx_caminho.Text) TBx_caminho = "" TBx_caminho.SetFocusEnd Sub

Private Sub UserForm_Activate() LControle Atribuir CBx_Tipo.AddItem "Corda" CBx_Tipo.AddItem "Sopro" CBx_Tipo.AddItem "Percussão"End Sub

Private Sub LControle() RA = Range("RA") NR = Range("NR") OP = Range("OP")End Sub

Private Sub GControle() Range("RA") = RA Range("OP") = OPEnd Sub

Private Sub CBt_Primeiro_Click() RA = 1 GControle AtribuirEnd Sub

Private Sub CBt_Anterior_Click() RA = RA - 1 GControle AtribuirEnd Sub

Private Sub CBt_Proximo_Click() RA = RA + 1 GControle AtribuirEnd Sub

Private Sub CBt_Ultimo_Click() RA = NR GControle AtribuirEnd Sub

Private Sub Atribuir() Dim Linha As Integer If NR = 0 Then Linha = RA + 2 Else Linha = RA + 1 End If TBx_Codigo = Sheets("Dados").Cells(Linha, 1) TBx_Instrumento = Sheets("Dados").Cells(Linha, 2)

CBx_Tipo = Sheets("Dados").Cells(Linha, 3) TBx_Marca = Sheets("Dados").Cells(Linha, 4) TBx_Preco = Sheets("Dados").Cells(Linha, 5) TBx_Quantidade = Sheets("Dados").Cells(Linha, 6) TBx_Observacoes = Sheets("Dados").Cells(Linha, 7) Lbl_Operacao = OP & "..." Lbl_Apontador = RA & " / " & NR Operacao NavegacaoEnd Sub

Private Sub Navegacao() CBt_Primeiro.Enabled = (RA > 1 And OP = "Navegando") CBt_Anterior.Enabled = (RA > 1 And OP = "Navegando") CBt_Proximo.Enabled = (RA < NR And OP = "Navegando") CBt_Ultimo.Enabled = (RA <> NR And OP = "Navegando")End Sub

Private Sub Operacao() CBt_Incluir.Enabled = (OP = "Navegando") CBt_Alterar.Enabled = (OP = "Navegando" And RA > 0) CBt_Excluir.Enabled = (OP = "Navegando" And RA > 0) CBt_Cancelar.Enabled = (OP = "Incluindo" Or OP = "Alterando") CBt_Consultar.Enabled = (OP = "Navegando" And NR > 1) CBt_Gravar.Enabled = (OP = "Incluindo" Or OP = "Alterando") CBt_Sair.Enabled = (OP = "Navegando") CBt_Imprimir.Enabled = (OP = "Navegando")End Sub

Private Sub CBt_Incluir_Click() OP = "Incluindo" GControle RA = NR + 1 Atribuir Fra_Dados.Enabled = True TBx_Codigo.SetFocusEnd Sub

Private Sub CBt_Alterar_Click() OP = "Alterando" GControle Atribuir Fra_Dados.Enabled = True TBx_Codigo.SetFocusEnd Sub

Private Sub CBt_Excluir_Click() If MsgBox("Confirma a exclusão?", vbYesNo + vbQuestion, "Confirmação") = vbYes Then Sheets("Dados").Rows(RA + 1).Delete If RA = NR Then RA = RA - 1 GControle End If CBt_Cancelar_Click End IfEnd Sub

Private Sub CBt_Cancelar_Click() LControle OP = "Navegando" GControle Atribuir Fra_Dados.Enabled = FalseEnd Sub

Private Sub CBt_Consultar_Click() Frm_Consulta.Show LControle AtribuirEnd Sub

Private Sub CBt_Gravar_Click() If MsgBox("Confirma a operação?", vbYesNo + vbQuestion, "Confirmação") = vbYes Then Sheets("Dados").Cells(RA + 1, 1) = TBx_Codigo Sheets("Dados").Cells(RA + 1, 2) = TBx_Instrumento Sheets("Dados").Cells(RA + 1, 3) = CBx_Tipo Sheets("Dados").Cells(RA + 1, 4) = TBx_Marca Sheets("Dados").Cells(RA + 1, 5) = TBx_Preco Sheets("Dados").Cells(RA + 1, 6) = TBx_Quantidade Sheets("Dados").Cells(RA + 1, 7) = TBx_Observacoes GControle CBt_Cancelar_Click End IfEnd Sub

Private Sub CBt_Sair_Click() Unload MeEnd Sub

Private Sub CBt_Imprimir_Click() Sheets("Dados").PrintOutEnd Sub

Frm_Consulta

Option Explicit

Private Sub CBt_Fechar_Click() Unload MeEnd Sub

Private Sub UserForm_Activate() Dim N As Integer For N = 1 To 7 CBx_Campo.AddItem Sheets("Dados").Cells(1, N) Next NEnd Sub

Private Sub CBx_Campo_Change() TBx_Dado.SetFocusEnd Sub

Private Sub CBt_Buscar_Click() If TBx_Dado.Text <> "" Then On Error GoTo NaoEncontrado Range("RA") = Sheets("Dados").Columns(CBx_Campo.ListIndex + 1).Find(TBx_Dado.Text).Row - 1 Unload Me Exit SubNaoEncontrado: MsgBox "Dado " & TBx_Dado.Text & " Não encontrado.", vbOKOnly + vbCritical, "Resultado da Busca" End IfEnd Sub