Bom dia!
Estou criando um programa em VBA EXCEL de cadastro de clientes (Agricultores), e estou com problemas em meu botão de editar. Não estou conseguindo criar uma rotina para torná-lo executável. Por exemplo quero entrar pelo meu formulário, editar o cadastro já existente, e depois salva-ló sem que ele repita o registro. Vou mandar meu projeto para analise e solução do problema.
desde já agradeço.
Private Sub botao_editar_Click()
'verificar se o usuario selecionou algum nome
If caixa_localizar.ListIndex = -1 Then
MsgBox "Selecione o nome para editar!", vbExclamation
Exit Sub
End If
linha = caixa_localizar.ListIndex + 2
resposta = MsgBox("Deseja editar cadastro?", vbYesNo)
If resposta = vbYes Then
Worksheets("GarantiaSafra").Select
Cells(linha, 1) = caixa_nome
Cells(linha, 2) = caixa_apelido
Cells(linha, 3) = caixa_cpf
Cells(linha, 4) = caixa_rg
Cells(linha, 5) = caixa_datadenasc
Cells(linha, 6) = caixa_endereço
Cells(linha, 7) = caixa_nº
Cells(linha, 8) = caixa_cep
Cells(linha, 9) = caixa_cidade
Cells(linha, 10) = caixa_estado
Cells(linha, 11) = caixa_bairro
Cells(linha, 12) = caixa_contatos
Cells(linha, 13) = caixa_localidade
Cells(linha, 14) = caixa_programas
Exit Sub
End If
MsgBox "Dados Atualizados!", vbInformation
End Sub
Private Sub botao_excluir_Click()
'verificar se usuário selecionou nome
If caixa_localizar.ListIndex = -1 Then
MsgBox "Selecione um nome antes de excluir!", vbExclamation
Exit Sub
End If
'variável que a linha o nome está
linha = caixa_localizar.ListIndex + 2
'Worksheets("GarantiaSafra").Rows(linha).Delete
resposta = MsgBox("Deseja realmente excluir esse cadastro?", vbYesNo)
If resposta = vbYes Then
Worksheets("GarantiaSafra").Rows(linha).Delete
'comando para excluir sem deletar a linha
'Worksheets("GarantiaSafra").Cells(linha, 15) = "Excluido"
MsgBox "Cadastro excluido com sucesso.", vbInformation
Exit Sub
End If
'codigo para limpar as caixas
caixa_nome = ""
caixa_apelido = ""
caixa_bairro = ""
caixa_cep = ""
caixa_cidade = ""
caixa_contatos = ""
caixa_cpf = ""
caixa_datadenasc = ""
caixa_endereço = ""
caixa_estado = ""
caixa_localidade = ""
caixa_nº = ""
caixa_rg = ""
caixa_programas = ""
caixa_localizar = ""
'comando para colocar o foco
caixa_nome.SetFocus
'Comamdo pra salvar automatico
ActiveWorkbook.Save
End Sub
Private Sub botao_fechar_Click()
Unload CADASTROAGRI
LOGIN.Show
End Sub
Private Sub botao_imprimir_Click()
Worksheets("GarantiaSafra").Select
Unload CADASTROAGRI
Application.Visible = True
ActiveWindow.SelectedSheets.PrintPreview
Application.Visible = False
CADASTROAGRI.Show
End Sub
Private Sub Botao_novo_Click()
caixa_nome = ""
caixa_apelido = ""
caixa_bairro = ""
caixa_cep = ""
caixa_cidade = ""
caixa_contatos = ""
caixa_cpf = ""
caixa_datadenasc = ""
caixa_endereço = ""
caixa_estado = ""
caixa_localidade = ""
caixa_nº = ""
caixa_rg = ""
caixa_localizar = ""
caixa_programas = ""
'codigo para enviar o cursor para caixa nome
caixa_nome.SetFocus
ActiveWorkbook.Save
End Sub
Private Sub botao_salvar_Click()
'Comando pra validação de campos
If ValidacaoCampos = False Then
MsgBox "Atenção! Campos sem preencimentos.", vbCritical
Exit Sub
End If
totalregistro = Worksheets("GarantiaSafra").UsedRange.Rows.Count + 1
Worksheets("GarantiaSafra").Select
'Aqui começa a gravação dos dados
Cells(totalregistro, 1) = caixa_nome
Cells(totalregistro, 2) = caixa_apelido
Cells(totalregistro, 3) = caixa_cpf
Cells(totalregistro, 4) = caixa_rg
Cells(totalregistro, 5) = caixa_datadenasc
Cells(totalregistro, 6) = caixa_endereço
Cells(totalregistro, 7) = caixa_nº
Cells(totalregistro, 8) = caixa_cep
Cells(totalregistro, 9) = caixa_cidade
Cells(totalregistro, 10) = caixa_estado
Cells(totalregistro, 11) = caixa_bairro
Cells(totalregistro, 12) = caixa_contatos
Cells(totalregistro, 13) = caixa_localidade
Cells(totalregistro, 14) = caixa_programas
MsgBox "Cadastrado efetuado com sucesso.", vbInformation
'codigo para limpar as caixas
caixa_nome = ""
caixa_apelido = ""
caixa_bairro = ""
caixa_cep = ""
caixa_cidade = ""
caixa_contatos = ""
caixa_cpf = ""
caixa_datadenasc = ""
caixa_endereço = ""
caixa_estado = ""
caixa_localidade = ""
caixa_nº = ""
caixa_rg = ""
caixa_programas = ""
'codigo para enviar o cursor para caixa nome
caixa_nome.SetFocus
'comando para classificar em ordem alfabética
ORDENAR
'salvamento automatico
ActiveWorkbook.Save
'codigo para preencher a caixa localizar
totaldelinhas = Worksheets("GarantiaSafra").UsedRange.Rows.Count
caixa_localizar.RowSource = "GarantiaSafra!a2:a" & totaldelinhas
End Sub
Private Sub caixa_apelido_Change()
caixa_apelido = UCase(caixa_apelido)
End Sub
Private Sub caixa_bairro_Change()
caixa_bairro = UCase(caixa_bairro)
End Sub
'comando para organizar o cep
Private Sub caixa_cep_Change()
If Len(Me.caixa_cep.Text) = 2 Then
Me.caixa_cep.Text = Me.caixa_cep.Text & "."
Me.caixa_cep.SelStart = 4
ElseIf Len(Me.caixa_cep.Text) = 6 Then
Me.caixa_cep.Text = Me.caixa_cep.Text & "-"
Me.caixa_cep.SelStart = 7
ElseIf Len(Me.caixa_cep.Text) = 10 Then
Me.caixa_cidade.SetFocus
End If
End Sub
Private Sub caixa_cidade_Change()
caixa_cidade = UCase(caixa_cidade)
End Sub
'comando para organizar o cpf
Private Sub caixa_cpf_Change()
If Len(Me.caixa_cpf.Text) = 3 Then
Me.caixa_cpf.Text = Me.caixa_cpf.Text & "."
Me.caixa_cpf.SelStart = 6
ElseIf Len(Me.caixa_cpf.Text) = 7 Then
Me.caixa_cpf.Text = Me.caixa_cpf.Text & "."
Me.caixa_cpf.SelStart = 9
ElseIf Len(Me.caixa_cpf.Text) = 11 Then
Me.caixa_cpf.Text = Me.caixa_cpf.Text & "-"
ElseIf Len(Me.caixa_cpf.Text) = 14 Then
Me.caixa_rg.SetFocus
End If
End Sub
'comando para organizar a data
Private Sub caixa_datadenasc_Change()
If Len(Me.caixa_datadenasc.Text) = 2 Then
Me.caixa_datadenasc.Text = Me.caixa_datadenasc.Text & "/"
Me.caixa_datadenasc.SelStart = 4
ElseIf Len(Me.caixa_datadenasc.Text) = 5 Then
Me.caixa_datadenasc.Text = Me.caixa_datadenasc.Text & "/"
Me.caixa_datadenasc.SelStart = 7
ElseIf Len(Me.caixa_datadenasc.Text) = 10 Then
Me.caixa_endereço.SetFocus
End If
End Sub
Private Sub caixa_endereço_Change()
caixa_endereço = UCase(caixa_endereço)
End Sub
Private Sub caixa_localidade_Change()
caixa_localidade = UCase(caixa_localidade)
End Sub
Private Sub caixa_localizar_Click()
Worksheets("GarantiaSafra").Select
totalregistro = Worksheets("GarantiaSafra").UsedRange.Rows.Count
For i = 0 To totalregistro
If caixa_localizar.ListIndex = i Then
'preencher as caixas
caixa_nome = Cells(i + 2, 1)
caixa_apelido = Cells(i + 2, 2)
caixa_cpf = Cells(i + 2, 3)
caixa_rg = Cells(i + 2, 4)
caixa_datadenasc = Cells(i + 2, 5)
caixa_endereço = Cells(i + 2, 6)
caixa_nº = Cells(i + 2, 7)
caixa_cep = Cells(i + 2, 8)
caixa_cidade = Cells(i + 2, 9)
caixa_estado = Cells(i + 2, 10)
caixa_bairro = Cells(i + 2, 11)
caixa_contatos = Cells(i + 2, 12)
caixa_localidade = Cells(i + 2, 13)
caixa_programas = Cells(i + 2, 14)
Exit Sub
End If
Next
End Sub
'comando para o nº
Private Sub caixa_nº_Change()
If Len(Me.caixa_nº.Text) = 4 Then
Me.caixa_cep.SetFocus
End If
End Sub
Private Sub caixa_nome_Change()
caixa_nome = UCase(caixa_nome)
End Sub
Private Sub caixa_programas_Change()
caixa_programas = UCase(caixa_programas)
End Sub
Private Sub Image1_Click()
End Sub
'codigo para preencher a caixa estado
Private Sub UserForm_Initialize()
caixa_estado.AddItem "MG"
caixa_estado.AddItem "CE"
caixa_estado.AddItem "PE"
caixa_estado.AddItem "PB"
caixa_estado.AddItem "RN"
caixa_estado.AddItem "BA"
caixa_estado.AddItem "MA"
caixa_estado.AddItem "AL"
caixa_estado.AddItem "SE"
caixa_estado.AddItem "PI"
caixa_estado.AddItem "RJ"
caixa_estado.AddItem "SP"
caixa_estado.AddItem "GO"
caixa_estado.AddItem "MT"
caixa_estado.AddItem "MS"
caixa_estado.AddItem "RS"
caixa_estado.AddItem "SC"
caixa_estado.AddItem "PR"
caixa_estado.AddItem "AM"
caixa_estado.AddItem "RR"
caixa_estado.AddItem "RO"
caixa_estado.AddItem "AC"
caixa_estado.AddItem "DF"
caixa_estado.AddItem "ES"
caixa_estado.AddItem "TO"
caixa_estado.AddItem "PA"
'codigo para preencher a caixa localizar
totaldelinhas = Worksheets("GarantiaSafra").UsedRange.Rows.Count
caixa_localizar.RowSource = "GarantiaSafra!a2:a" & totaldelinhas
End Sub
'Código para valicação de campos
Function ValidacaoCampos() As Boolean
Dim valores(14) As Variant
Dim linha As Integer
ValidacaoCampos = True
With Me
valores(0) = .caixa_nome.Value
valores(1) = .caixa_apelido.Value
valores(2) = .caixa_cpf.Value
valores(3) = .caixa_rg.Value
valores(4) = .caixa_datadenasc.Value
valores(5) = .caixa_endereço.Value
valores(6) = .caixa_nº.Value
valores(7) = .caixa_cep.Value
valores(8) = .caixa_cidade.Value
valores(9) = .caixa_estado.Value
valores(10) = .caixa_bairro.Value
valores(11) = .caixa_contatos.Value
valores(12) = .caixa_localidade.Value
valores(13) = .caixa_programas.Value
End With
For linha = 0 To UBound(valores) - 1
If valores(linha) = "" Then
ValidacaoCampos = False
Exit For
End If
Next
End Function