- 04 Mar 2016 às 16:04
#8334
Oi, pessoal.
Criei um formulário para cadastro de professores.
Consigo Incluir, Pesquisar, Excluir...
O que não estou conseguindo é Pesquisar um Professor, mudar algum dado no formulário e, quando clicar em Alterar, gravar apenas o dado alterado, sem gerar um novo cadastro.
Poderiam me ajudar?
Desde já, agradeço a atenção!
Imagem do Formulário de Cadastro

Segue o Código:
Private Sub BOTAO_ALTERAR_F_Click()
If nome.Text = Me.CAIXA_NOME_F Then
GoTo Linha1
Exit Sub
End If
With Worksheets("FUNCIONARIOS").Range("A:A")
Set c = .Find(nome.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not c Is Nothing Then
c.Activate
ActiveCell.Value = CAIXA_NOME_F
ActiveCell.Offset(0, 1).Value = CAIXA_SETOR
ActiveCell.Offset(0, 2).Value = CAIXA_RG_F
ActiveCell.Offset(0, 3).Value = CAIXA_CPF_F
ActiveCell.Offset(0, 4).Value = CAIXA_END_F
ActiveCell.Offset(0, 5).Value = CAIXA_NUM_F
ActiveCell.Offset(0, 6).Value = CAIXA_BAIRRO_F
ActiveCell.Offset(0, 7).Value = CAIXA_CIDADE_F
ActiveCell.Offset(0, 8).Value = CAIXA_UF_F
ActiveCell.Offset(0, 9).Value = CAIXA_TEL1_F
ActiveCell.Offset(0, 10).Value = CAIXA_TEL2_F
End If
'LIMPAR
End With
Linha1:
MsgBox "ALTERAÇÃO EFETUADA COM SUCESSO.", vbInformation, "CADAST"
End Sub
Private Sub BOTAO_EXCLUIR_F_Click()
' VERIFICAR SE ALGUM NOME FOI SELECIONADO
If CAIXA_PESQUISAR_F.ListIndex = -1 Then
MsgBox "SELECIONE UM NOME PARA EXCLUIR.", , "CADASTRO"
Exit Sub
End If
' VARIÁVEL QUE ARMAZENA A LINHA EM QUE O NOME A SER EXCLUÍDO SE ENCONTRA
linha = CAIXA_PESQUISAR_F.ListIndex + 2
' COMANDO APAGAR
Worksheets("FUNCIONARIOS").Rows(linha).Delete
MsgBox "CADASTRO EXCLUÍDO COM SUCESSO.", , "CADASTRO"
' COMANDO PARA SALVAR AS INFORMAÇÕES DA PLANILHA AUTOMATICAMENTE
ActiveWorkbook.Save
End Sub
' BOTÃO FECHAR
Private Sub BOTAO_FECHAR_F_Click()
Resposta = MsgBox("DESEJA SAIR?", vbYesNo, "CADASTRO")
If Resposta = vbYes Then
Unload CADASTRO4
' COMANDO PARA FECHAR O PROGRAMA E O EXCEL
Application.Quit
End If
End Sub
' COMANDO IMPRIMIR
Private Sub BOTAO_IMPRIMIR_F_Click()
Worksheets("FUNCIONARIOS").Select
Unload CADASTRO4
Application.Visible = True
ActiveWindow.SelectedSheets.PrintPreview
Application.Visible = False
CADASTRO4.Show
End Sub
' BOTÃO INCLUIR
Private Sub BOTAO_INCLUIR_F_Click()
totalregistro = Worksheets("FUNCIONARIOS").UsedRange.Rows.Count + 1
Worksheets("FUNCIONARIOS").Select
Cells(totalregistro, 1) = CAIXA_NOME_F
Cells(totalregistro, 2) = CAIXA_SETOR
Cells(totalregistro, 3) = CAIXA_RG_F
Cells(totalregistro, 4) = CAIXA_CPF_F
Cells(totalregistro, 5) = CAIXA_END_F
Cells(totalregistro, 6) = CAIXA_NUM_F
Cells(totalregistro, 7) = CAIXA_BAIRRO_F
Cells(totalregistro, 8) = CAIXA_CIDADE_F
Cells(totalregistro, 9) = CAIXA_UF_F
Cells(totalregistro, 10) = CAIXA_TEL1_F
Cells(totalregistro, 11) = CAIXA_TEL2_F
MsgBox "DADOS GRAVADOS COM SUCESSO."
CAIXA_NOME_F = ""
CAIXA_SETOR = ""
CAIXA_RG_F = ""
CAIXA_CPF_F = ""
CAIXA_END_F = ""
CAIXA_NUM_F = ""
CAIXA_BAIRRO_F = ""
CAIXA_CIDADE_F = ""
CAIXA_UF_F = ""
CAIXA_TEL1_F = ""
CAIXA_TEL2_F = ""
CAIXA_NOME_F.SetFocus
' ATUALIZA A CAIXA LOCALIZAR
totaldelinhas = Worksheets("FUNCIONARIOS").UsedRange.Rows.Count
CAIXA_PESQUISAR_F.RowSource = "FUNCIONARIOS!A2:A" & totaldelinhas
' COMANDO PARA ORDENAR OS NOMES ALFABETICAMENTE
ORDENAR4
' COMANDO PARA SALVAR AS INFORMAÇÕES DA PLANILHA AUTOMATICAMENTE
ActiveWorkbook.Save
End Sub
Private Sub BOTAO_LIMPAR_F_Click()
CAIXA_PESQUISAR_F = ""
CAIXA_NOME_F = ""
CAIXA_SETOR = ""
CAIXA_RG_F = ""
CAIXA_CPF_F = ""
CAIXA_END_F = ""
CAIXA_NUM_F = ""
CAIXA_BAIRRO_F = ""
CAIXA_CIDADE_F = ""
CAIXA_UF_F = ""
CAIXA_TEL1_F = ""
CAIXA_TEL2_F = ""
CAIXA_NOME_F.SetFocus
End Sub
'BOTÃO VOLTAR
Private Sub BOTAO_VOLTAR_F_Click()
CAIXA_PESQUISAR_F = ""
CAIXA_NOME_F = ""
CAIXA_SETOR = ""
CAIXA_RG_F = ""
CAIXA_CPF_F = ""
CAIXA_END_F = ""
CAIXA_NUM_F = ""
CAIXA_BAIRRO_F = ""
CAIXA_CIDADE_F = ""
CAIXA_UF_F = ""
CAIXA_TEL1_F = ""
CAIXA_TEL2_F = ""
CAIXA_NOME_F.SetFocus
CADASTRO4.Hide
CADASTRO1.Show
End Sub
Private Sub CAIXA_NOME_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
'CAIXA PESQUISAR
Private Sub CAIXA_PESQUISAR_F_Click()
totalregistro = Worksheets("FUNCIONARIOS").UsedRange.Rows.Count
Worksheets("FUNCIONARIOS").Select
For i = 0 To totalregistro
If CAIXA_PESQUISAR_F.ListIndex = i Then
' PREENCHER AS CAIXAS
CAIXA_NOME_F = Cells(i + 2, 1)
CAIXA_SETOR = Cells(i + 2, 2)
CAIXA_RG_F = Cells(i + 2, 3)
CAIXA_CPF_F = Cells(i + 2, 4)
CAIXA_END_F = Cells(i + 2, 5)
CAIXA_NUM_F = Cells(i + 2, 6)
CAIXA_BAIRRO_F = Cells(i + 2, 7)
CAIXA_CIDADE_F = Cells(i + 2, 8)
CAIXA_UF_F = Cells(i + 2, 9)
CAIXA_TEL1_F = Cells(i + 2, 10)
CAIXA_TEL2_F = Cells(i + 2, 11)
Exit Sub
End If
Next
End Sub
' UCASE NAS CAIXAS
Private Sub CAIXA_PESQUISAR_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_SETOR_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_RG_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_CPF_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_END_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_BAIRRO_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_CIDADE_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_UF_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_TEL1_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_TEL2_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
' PREENCHER A CAIXA LOCALIZAR
Private Sub UserForm_Initialize()
totaldelinhas = Worksheets("FUNCIONARIOS").UsedRange.Rows.Count
CAIXA_PESQUISAR_F.RowSource = "FUNCIONARIOS!A2:A" & totaldelinhas
End Sub
Criei um formulário para cadastro de professores.
Consigo Incluir, Pesquisar, Excluir...
O que não estou conseguindo é Pesquisar um Professor, mudar algum dado no formulário e, quando clicar em Alterar, gravar apenas o dado alterado, sem gerar um novo cadastro.
Poderiam me ajudar?
Desde já, agradeço a atenção!
Imagem do Formulário de Cadastro

Segue o Código:
Private Sub BOTAO_ALTERAR_F_Click()
If nome.Text = Me.CAIXA_NOME_F Then
GoTo Linha1
Exit Sub
End If
With Worksheets("FUNCIONARIOS").Range("A:A")
Set c = .Find(nome.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not c Is Nothing Then
c.Activate
ActiveCell.Value = CAIXA_NOME_F
ActiveCell.Offset(0, 1).Value = CAIXA_SETOR
ActiveCell.Offset(0, 2).Value = CAIXA_RG_F
ActiveCell.Offset(0, 3).Value = CAIXA_CPF_F
ActiveCell.Offset(0, 4).Value = CAIXA_END_F
ActiveCell.Offset(0, 5).Value = CAIXA_NUM_F
ActiveCell.Offset(0, 6).Value = CAIXA_BAIRRO_F
ActiveCell.Offset(0, 7).Value = CAIXA_CIDADE_F
ActiveCell.Offset(0, 8).Value = CAIXA_UF_F
ActiveCell.Offset(0, 9).Value = CAIXA_TEL1_F
ActiveCell.Offset(0, 10).Value = CAIXA_TEL2_F
End If
'LIMPAR
End With
Linha1:
MsgBox "ALTERAÇÃO EFETUADA COM SUCESSO.", vbInformation, "CADAST"
End Sub
Private Sub BOTAO_EXCLUIR_F_Click()
' VERIFICAR SE ALGUM NOME FOI SELECIONADO
If CAIXA_PESQUISAR_F.ListIndex = -1 Then
MsgBox "SELECIONE UM NOME PARA EXCLUIR.", , "CADASTRO"
Exit Sub
End If
' VARIÁVEL QUE ARMAZENA A LINHA EM QUE O NOME A SER EXCLUÍDO SE ENCONTRA
linha = CAIXA_PESQUISAR_F.ListIndex + 2
' COMANDO APAGAR
Worksheets("FUNCIONARIOS").Rows(linha).Delete
MsgBox "CADASTRO EXCLUÍDO COM SUCESSO.", , "CADASTRO"
' COMANDO PARA SALVAR AS INFORMAÇÕES DA PLANILHA AUTOMATICAMENTE
ActiveWorkbook.Save
End Sub
' BOTÃO FECHAR
Private Sub BOTAO_FECHAR_F_Click()
Resposta = MsgBox("DESEJA SAIR?", vbYesNo, "CADASTRO")
If Resposta = vbYes Then
Unload CADASTRO4
' COMANDO PARA FECHAR O PROGRAMA E O EXCEL
Application.Quit
End If
End Sub
' COMANDO IMPRIMIR
Private Sub BOTAO_IMPRIMIR_F_Click()
Worksheets("FUNCIONARIOS").Select
Unload CADASTRO4
Application.Visible = True
ActiveWindow.SelectedSheets.PrintPreview
Application.Visible = False
CADASTRO4.Show
End Sub
' BOTÃO INCLUIR
Private Sub BOTAO_INCLUIR_F_Click()
totalregistro = Worksheets("FUNCIONARIOS").UsedRange.Rows.Count + 1
Worksheets("FUNCIONARIOS").Select
Cells(totalregistro, 1) = CAIXA_NOME_F
Cells(totalregistro, 2) = CAIXA_SETOR
Cells(totalregistro, 3) = CAIXA_RG_F
Cells(totalregistro, 4) = CAIXA_CPF_F
Cells(totalregistro, 5) = CAIXA_END_F
Cells(totalregistro, 6) = CAIXA_NUM_F
Cells(totalregistro, 7) = CAIXA_BAIRRO_F
Cells(totalregistro, 8) = CAIXA_CIDADE_F
Cells(totalregistro, 9) = CAIXA_UF_F
Cells(totalregistro, 10) = CAIXA_TEL1_F
Cells(totalregistro, 11) = CAIXA_TEL2_F
MsgBox "DADOS GRAVADOS COM SUCESSO."
CAIXA_NOME_F = ""
CAIXA_SETOR = ""
CAIXA_RG_F = ""
CAIXA_CPF_F = ""
CAIXA_END_F = ""
CAIXA_NUM_F = ""
CAIXA_BAIRRO_F = ""
CAIXA_CIDADE_F = ""
CAIXA_UF_F = ""
CAIXA_TEL1_F = ""
CAIXA_TEL2_F = ""
CAIXA_NOME_F.SetFocus
' ATUALIZA A CAIXA LOCALIZAR
totaldelinhas = Worksheets("FUNCIONARIOS").UsedRange.Rows.Count
CAIXA_PESQUISAR_F.RowSource = "FUNCIONARIOS!A2:A" & totaldelinhas
' COMANDO PARA ORDENAR OS NOMES ALFABETICAMENTE
ORDENAR4
' COMANDO PARA SALVAR AS INFORMAÇÕES DA PLANILHA AUTOMATICAMENTE
ActiveWorkbook.Save
End Sub
Private Sub BOTAO_LIMPAR_F_Click()
CAIXA_PESQUISAR_F = ""
CAIXA_NOME_F = ""
CAIXA_SETOR = ""
CAIXA_RG_F = ""
CAIXA_CPF_F = ""
CAIXA_END_F = ""
CAIXA_NUM_F = ""
CAIXA_BAIRRO_F = ""
CAIXA_CIDADE_F = ""
CAIXA_UF_F = ""
CAIXA_TEL1_F = ""
CAIXA_TEL2_F = ""
CAIXA_NOME_F.SetFocus
End Sub
'BOTÃO VOLTAR
Private Sub BOTAO_VOLTAR_F_Click()
CAIXA_PESQUISAR_F = ""
CAIXA_NOME_F = ""
CAIXA_SETOR = ""
CAIXA_RG_F = ""
CAIXA_CPF_F = ""
CAIXA_END_F = ""
CAIXA_NUM_F = ""
CAIXA_BAIRRO_F = ""
CAIXA_CIDADE_F = ""
CAIXA_UF_F = ""
CAIXA_TEL1_F = ""
CAIXA_TEL2_F = ""
CAIXA_NOME_F.SetFocus
CADASTRO4.Hide
CADASTRO1.Show
End Sub
Private Sub CAIXA_NOME_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
'CAIXA PESQUISAR
Private Sub CAIXA_PESQUISAR_F_Click()
totalregistro = Worksheets("FUNCIONARIOS").UsedRange.Rows.Count
Worksheets("FUNCIONARIOS").Select
For i = 0 To totalregistro
If CAIXA_PESQUISAR_F.ListIndex = i Then
' PREENCHER AS CAIXAS
CAIXA_NOME_F = Cells(i + 2, 1)
CAIXA_SETOR = Cells(i + 2, 2)
CAIXA_RG_F = Cells(i + 2, 3)
CAIXA_CPF_F = Cells(i + 2, 4)
CAIXA_END_F = Cells(i + 2, 5)
CAIXA_NUM_F = Cells(i + 2, 6)
CAIXA_BAIRRO_F = Cells(i + 2, 7)
CAIXA_CIDADE_F = Cells(i + 2, 8)
CAIXA_UF_F = Cells(i + 2, 9)
CAIXA_TEL1_F = Cells(i + 2, 10)
CAIXA_TEL2_F = Cells(i + 2, 11)
Exit Sub
End If
Next
End Sub
' UCASE NAS CAIXAS
Private Sub CAIXA_PESQUISAR_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_SETOR_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_RG_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_CPF_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_END_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_BAIRRO_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_CIDADE_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_UF_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_TEL1_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub CAIXA_TEL2_F_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
' PREENCHER A CAIXA LOCALIZAR
Private Sub UserForm_Initialize()
totaldelinhas = Worksheets("FUNCIONARIOS").UsedRange.Rows.Count
CAIXA_PESQUISAR_F.RowSource = "FUNCIONARIOS!A2:A" & totaldelinhas
End Sub
Editado pela última vez por Kledison em 05 Mar 2016 às 21:42, em um total de 1 vez.
Razão: Regra nº 2A: Os membros devem postar de maneira que seja consistente com a "escrita normal". Os membros não devem usar quantidades excessivas de emoticons, não devem usar CAIXA ALTA EM EXCESSO, ou usar quantidades excessivas de pontuação, seja e