EDITAR NO VBA EXCEL
Oà gente, tenho um form de cadastro em VBA Excel que esta gravando perfeitamente os dados. O que não estou conseguindo é EDITAR. Eu carrego os dados dos campos do form através de um combo onde aparece os nomes que já estão cadastrados no eveto CHANGE. Só que ao realizar qualquer alteração ele salva um novo registro(nova linha) e fica duplo, quando que o certo seria localizar o registro existente e somente atualizar. Segue o meu trecho de gravação:
Private Sub ComboBox_nomes_Change()
If ComboBox_Nomes.ListIndex = -1 Then
Exit Sub
End If
LinhaPlanilha = ComboBox_Nomes.ListIndex + 2
txtCod.Value = Dado.Cells(LinhaPlanilha, 1).Value
lblNome.Caption = Dado.Cells(LinhaPlanilha, 2).Value
ComboBox_Local.Value = Dado.Cells(LinhaPlanilha, 3).Value
ComboBox_Setor.Value = Dado.Cells(LinhaPlanilha, 4).Value
ComboBox_UF.Value = Dado.Cells(LinhaPlanilha, 5).Value
ComboBox_Cidade.Value = Dado.Cells(LinhaPlanilha, 6).Value
txtTel.Value = Dado.Cells(LinhaPlanilha, 7).Value
txtCel.Value = Dado.Cells(LinhaPlanilha, 8).Value
txtCod.SetFocus
End Sub
Private Sub cmdSalvar_Click()
Dim LinhaProcura As Integer
Dim ValorProcura As Long
TotalRegistros = Dado.UsedRange.Rows.Count
LinhaPlanilha = 0
If txtCod.Value = [Ô][Ô] Then
MsgBox [Ô]Informe o codigo!!![Ô]
txtNome.SetFocus
Exit Sub
End If
If LinhaPlanilha = 0 Then
LinhaPlanilha = TotalRegistros + 1
End If
With Dado
.Cells(LinhaPlanilha, 1).Value = txtCod.Value
.Cells(LinhaPlanilha, 2).Value = lblNome.Caption
.Cells(LinhaPlanilha, 3).Value = ComboBox_Local.Value
.Cells(LinhaPlanilha, 4).Value = ComboBox_Setor.Value
.Cells(LinhaPlanilha, 5).Value = ComboBox_UF.Value
.Cells(LinhaPlanilha, 6).Value = ComboBox_Cidade.Value
.Cells(LinhaPlanilha, 7).Value = txtTel.Value
.Cells(LinhaPlanilha, 8).Value = txtCel.Value
End With
LinhaPlanilha = 0
TotalRegistros = Dado.UsedRange.Rows.Count
AtualizaCombobox_nomes
cmdLimpar_Click
[ô]ActiveWorkbook.Save
UserForm_Initialize
txtCod.SetFocus
End Sub
Private Sub ComboBox_nomes_Change()
If ComboBox_Nomes.ListIndex = -1 Then
Exit Sub
End If
LinhaPlanilha = ComboBox_Nomes.ListIndex + 2
txtCod.Value = Dado.Cells(LinhaPlanilha, 1).Value
lblNome.Caption = Dado.Cells(LinhaPlanilha, 2).Value
ComboBox_Local.Value = Dado.Cells(LinhaPlanilha, 3).Value
ComboBox_Setor.Value = Dado.Cells(LinhaPlanilha, 4).Value
ComboBox_UF.Value = Dado.Cells(LinhaPlanilha, 5).Value
ComboBox_Cidade.Value = Dado.Cells(LinhaPlanilha, 6).Value
txtTel.Value = Dado.Cells(LinhaPlanilha, 7).Value
txtCel.Value = Dado.Cells(LinhaPlanilha, 8).Value
txtCod.SetFocus
End Sub
Private Sub cmdSalvar_Click()
Dim LinhaProcura As Integer
Dim ValorProcura As Long
TotalRegistros = Dado.UsedRange.Rows.Count
LinhaPlanilha = 0
If txtCod.Value = [Ô][Ô] Then
MsgBox [Ô]Informe o codigo!!![Ô]
txtNome.SetFocus
Exit Sub
End If
If LinhaPlanilha = 0 Then
LinhaPlanilha = TotalRegistros + 1
End If
With Dado
.Cells(LinhaPlanilha, 1).Value = txtCod.Value
.Cells(LinhaPlanilha, 2).Value = lblNome.Caption
.Cells(LinhaPlanilha, 3).Value = ComboBox_Local.Value
.Cells(LinhaPlanilha, 4).Value = ComboBox_Setor.Value
.Cells(LinhaPlanilha, 5).Value = ComboBox_UF.Value
.Cells(LinhaPlanilha, 6).Value = ComboBox_Cidade.Value
.Cells(LinhaPlanilha, 7).Value = txtTel.Value
.Cells(LinhaPlanilha, 8).Value = txtCel.Value
End With
LinhaPlanilha = 0
TotalRegistros = Dado.UsedRange.Rows.Count
AtualizaCombobox_nomes
cmdLimpar_Click
[ô]ActiveWorkbook.Save
UserForm_Initialize
txtCod.SetFocus
End Sub
Cara tenho certeza de seja isso o que esta precisando
Segue o link do exemplo que postei para um outro usuario
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=380301&varWorld=
Baixe-o e desfrute
Segue o link do exemplo que postei para um outro usuario
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=380301&varWorld=
Baixe-o e desfrute
Tópico encerrado , respostas não são mais permitidas