Bom dia.
Recentemente vendo e praticando umas videos aulas me deparei com um pequeno problema.
Numa determinada aula que ensinava a alterar registros salvos, travei num problema aparentemente simples, do qual nao consigo descobrir o motivo.
Na planilha tenho alguns botoes, entre eles os de "Buscar" e "Gravar". Quando seleciono um nome no Combo Box e clico no botao Buscar, ele deve buscar valores da planilha 2 e demonstralos na planilha1, ate ai esta funcionando bem. A questao e que o nome nao deveria sumir do Combo Box, pois com base nele e usando as Subs Checar Valores e Gravar, a macro deve atualizar os dados (Caso tal nome ja exista no banco de dados) em vez de duplicar os registros salvos. Dentro da SUB Gravar existe chamada para outras Subs (Checar registros e Atualizar Combos), ambos criados em modulos separados. Abaixo segue o codigo das quatro subs (Gravar, Buscar, Checar Valores e Atualizar Combos).
A grande questao é, escolho um nome no Combo Box, clico em buscar, altero algum dados e clico em Gravar, o nome some, o que faz com que a Sub Checar Registros nao funcione direito e ai ele duplica o registro.
Poderiam me ajudar a encontrar onde esta o erro?
Private Sub BTBUSCAR_Click()
Application.ScreenUpdating = False
Dim w As Worksheet
Dim w2 As Worksheet
Dim nome As String
Set w = Sheets("Planilha1")
Set w2 = Sheets("Planilha2")
nome = Sheets("Planilha1").cmbbuscar.Value
w2.Select
w2.Range("a2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = nome Then
w.Range("a2").Value = ActiveCell.Value
w.Range("b2").Value = ActiveCell.Offset(0, 1).Value
w.Range("c2").Value = ActiveCell.Offset(0, 2).Value
Exit Do
End If
ActiveCell.Offset(1, 0).Select
Loop
atualizacombo
w.Select
w.Range("a2").Select
Application.ScreenUpdating = True
End Sub
Private Sub BTGRAVAR_Click()
Application.ScreenUpdating = False
Dim w As Worksheet
Dim w2 As Worksheet
Set w = Sheets("Planilha1")
Set w2 = Sheets("Planilha2")
w.Select
w.Range("a2:c2").Select
Selection.Copy
w2.Select
w2.Range("a1048576").Select
ActiveCell.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
checar_registros
Application.CutCopyMode = False
atualizacombo
w.Select
w.Range("a2:c2").Clear
w.Range("a2").Select
Application.ScreenUpdating = True
End Sub
Sub atualizacombo()
Application.ScreenUpdating = False
Dim w As Worksheet
Set w = Sheets("Planilha2")
w.Select
w.Range("a2").Select
Sheets("Planilha1").cmbexcluir.Clear
Sheets("Planilha1").cmbbuscar.Clear
Do While ActiveCell.Value <> ""
Sheets("Planilha1").cmbexcluir.AddItem ActiveCell.Value
Sheets("Planilha1").cmbbuscar.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
End Sub
Sub checar_registros()
Dim w As Worksheet
Dim w2 As Worksheet
Dim nome As String
Set w = Sheets("Planilha1")
Set w2 = Sheets("Planilha2")
nome = Sheets("Planilha1").cmbbuscar.Value
w2.Select
w2.Range("a2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = nome Then
ActiveCell.Value = w.Range("a2").Value
ActiveCell.Offset(0, 1).Value = w.Range("b2").Value
ActiveCell.Offset(0, 2).Value = w.Range("c2").Value
MsgBox "Dados alterados com sucesso."
w.Select
w.Range("a2").Select
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
End Sub
Postado : 26/04/2018 7:45 am