Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% acharam este documento útil (0 voto)
237 visualizações14 páginas

VBA

Fazer download em doc, pdf ou txt
Fazer download em doc, pdf ou txt
Fazer download em doc, pdf ou txt
Você está na página 1/ 14

VBA - Cadastro de instrumentos Musicais

Ateno ! Recebi este projeto de um colaborador e resolvi publicar (aps muita relutncia) devido a inmeras consultas sobre VBA com Excel. Portanto que fique claro que : VBA no a minha praia e que eu s a utilizo quando estritamente necessrio para intercambiar com aplicaes Office . Outra coisa, o projeto no de minha autoria, e, portanto no dou suporte ao mesmo; estou publicando o cdigo para ajudar quem deseja estudar VBA e no encontra um exemplo prtico em portugus com Excel. Este exemplo um cadastro de instrumento musicais em Excel. Atente para o fato de que ele usa planilhas Excel como fonte de dados. Voc pode iniciar o projeto Abrindo o Excel e no menu Ferramentas selecionar : Macro -> Editor do Visual Basic

A seguir no menu Inserir inclua um formulrio (UseForm) e inclua os objetos no formulrio conforme a figura. A seguir selecione o evento para colocar o cdigo que esta descrito no final do artigo.

Bom estudo e boa sorte !

Cadastro de Instrumentos Musicais em VBA com Excel


Nosso programa em VBA, consiste em um sistema para cadastro de produtos de uma loja de instrumentos musicais. Nele ser possvel fazer a incluso de novos produtos, definido seu cdigo, o nome, que tipo de instrumento , a marca do fabricante, seu preo, a quantidade, e por fim escrever alguma observao sobre o produto. Tambm possvel editar os excluir algum produto depois de cadastrado. Assim como imprimir, ou fazer uma busca entre muitos registros. Foi criada tambm uma rea para backup, onde o usurio informa onde deve ser feita a

cpia e o nome do arquivo. um sistema simples que serve para auxiliar na administrao de uma loja de instrumentos musicais. A seguir mostraremos um passo a passo da utilizao do programa: Tela de login do sistema

Nessa tela o usurio ir entrar com seu nome e senha para ter acesso ao sistema, lembrando que o nome e senha j devero estar cadastrados. Caso o usurio no esteja cadastrado ser mostrada uma tela de erro com a seguinte mensagem:

A senha tambm pode no conferir com a cadastrada, ento ser mostrada a seguinte tela:

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

Aps ser validado no sistema ser exibida a tela de menu, onde ser possvel 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 incluso, alterao ou excluso de produtos. Tambm poderemos fazer uma consulta a um produto existente ou somente imprimir.

As opes da tela de cadastro so muitas, vamos analis-las uma a uma. Na parte superior da tela temos a barra de navegao, nela podemos navegar pelos registros, indo ao prximo ou anterior, e tambm pulando para o primeiro ou ltimo registro.

Na rea inferior da tela, temos os botes:

Usa do

Usa do

Usa do

Na tela de cadastro, na parte inferior direita, exibido o status da operao, ou seja, qual operao voc est fazendo no momento:

Eo lti

Ao clicarmos no boto 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:

Aps 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. Aps colocar o caminho s clicar no boto backup que a cpia do seu arquivo ser feita no caminho indicado:

A seguir temos o cdigo do projeto:

Frm_Login - 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 no confere" TBx_Senha = "" TBx_Senha.SetFocus End If Exit Sub NaoEncontrado: MsgBox "Usurio no cadastrado." TBx_Usuario = "" TBx_Usuario.SetFocus End 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 - Menu de opes


Private Sub CBt_CadProduto_Click() Frm_Cadastro.Show End Sub Private Sub CBt_Finalizar_Click() Unload Me End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If MsgBox("Confirma a finalizao do sistema?", vbYesNo + vbQuestion, "Confirmao") = vbYes Then ActiveWorkbook.Save Application.Quit Application.Visible = True Else

Cancel = 1 End If End Sub

Frm_Cadastro - Cadastro do sistema


Option Explicit 'RA = REGISTRO ATUAL 'NR = NUMERO TOTAL DE REGISTROS 'OP = OPERAO Dim RA As Integer, NR As Integer, OP As String Private Sub CBt_backup_Click() ActiveWorkbook.SaveCopyAs (TBx_caminho.Text) TBx_caminho = "" TBx_caminho.SetFocus End Sub Private Sub UserForm_Activate() LControle Atribuir CBx_Tipo.AddItem "Corda" CBx_Tipo.AddItem "Sopro" CBx_Tipo.AddItem "Percusso" End Sub Private Sub LControle() RA = Range("RA") NR = Range("NR") OP = Range("OP") End Sub Private Sub GControle() Range("RA") = RA Range("OP") = OP End Sub Private Sub CBt_Primeiro_Click() RA = 1 GControle Atribuir End Sub Private Sub CBt_Anterior_Click() RA = RA - 1

End Sub

GControle Atribuir

Private Sub CBt_Proximo_Click() RA = RA + 1 GControle Atribuir End Sub Private Sub CBt_Ultimo_Click() RA = NR GControle Atribuir End 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 Navegacao End 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)

End Sub

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")

Private Sub CBt_Incluir_Click() OP = "Incluindo" GControle RA = NR + 1 Atribuir Fra_Dados.Enabled = True TBx_Codigo.SetFocus End Sub Private Sub CBt_Alterar_Click() OP = "Alterando" GControle Atribuir Fra_Dados.Enabled = True TBx_Codigo.SetFocus End Sub Private Sub CBt_Excluir_Click() If MsgBox("Confirma a excluso?", vbYesNo + vbQuestion, "Confirmao") = vbYes Then Sheets("Dados").Rows(RA + 1).Delete If RA = NR Then RA = RA - 1 GControle End If CBt_Cancelar_Click End If End Sub Private Sub CBt_Cancelar_Click() LControle OP = "Navegando" GControle Atribuir Fra_Dados.Enabled = False End Sub Private Sub CBt_Consultar_Click()

Frm_Consulta.Show LControle Atribuir End Sub Private Sub CBt_Gravar_Click() If MsgBox("Confirma a operao?", vbYesNo + vbQuestion, "Confirmao") = 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 If End Sub Private Sub CBt_Sair_Click() Unload Me End Sub Private Sub CBt_Imprimir_Click() Sheets("Dados").PrintOut End Sub

Frm_Consulta - Consulta do sistema


Option Explicit Private Sub CBt_Fechar_Click() Unload Me End Sub Private Sub UserForm_Activate() Dim N As Integer For N = 1 To 7 CBx_Campo.AddItem Sheets("Dados").Cells(1, N) Next N End Sub Private Sub CBx_Campo_Change() TBx_Dado.SetFocus

End 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 Sub NaoEncontrado: MsgBox "Dado " & TBx_Dado.Text & " No encontrado.", vbOKOnly + vbCritical, "Resultado da Busca" End If End Sub E com isto encerramos o cdigo que voc dever incluir no projeto usando o Editor de Cdigos do Visual Basic do Excel. Hasta la vista... Jos Carlos Macoratti

Você também pode gostar