Corregir macro para que pegue los datos modificados en base de datos.
He tratado de buscarle el simple error a esta macro pero solo con el apoyo de expertos lograré la solución. Es una agenda de nombres y datos generales por municipio; uno en cada hoja. Con el CmdBtn1, ingresa perfectamente los datos y ordena por nombre; con el CmdBtn2, se consulta y carga bien los datos al formulario, y con el CmdBtn3, es para modificar algún dato. El apoyo es corregir esta última macro para que no repita el nombre En este caso se necesita que solo lo encime en la misma línea ya con él o los datos corregidos. Para mayor comprensión te anexo la macro para ingresar los datos y para modificar.
Muchas gracias por las atenciones.
Ref: 8-01-2015
Private Sub CommandButton1_Click() 'INGRESAR DATOS, YA QUEDÓ LISTA, NO MOVER
Application.ScreenUpdating = False
Dim Mp As String
Mp = ComboBox1.Value
'On Error GoTo sinhoja
Sheets(Mp).Unprotect 'DESPROTEGE LA HOJA
Sheets(Mp).Activate
Range("b65536").End(xlUp).Select
On Error GoTo 0
ActiveSheet.Range("a1").Select
Range("b1").Select
Range("b" & Cells.Rows.Count).End(xlUp).Offset(1).Select
'xxxxxxxx
ActiveCell.Offset(0, 0).Select
ActiveCell = ComboBox2 ' Nombre
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox1 ' Apellidos
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox2 ' Dirección
ActiveCell.Offset(0, 1).Select
ActiveCell = Val(TextBox3) ' Telefono
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox8 ' Mail
ActiveCell.Offset(0, 1).Select
ActiveCell = ComboBox3 ' Proveedor de:
ActiveCell.Offset(0, 1).Select
ActiveCell = ComboBox4 ' Forma de pago
' ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, 1).Select
ActiveCell = Val(TextBox4) ' Dia
ActiveCell.Offset(0, 1).Select
ActiveCell = Val(TextBox5) ' Mes
ActiveCell.Offset(0, 1).Select
ActiveCell = Val(TextBox6) ' Año
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox7 ' Comentarios
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
ComboBox2 = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
'TextBox9.Text = ""
ComboBox3 = ""
ComboBox4 = ""
Call Ordenar 'con ésta instrucción, llamo a la macro para ordenar la agenda.
ComboBox1.SetFocus
Application.ScreenUpdating = True
Sheets(Mp).Protect
End Sub
Private Sub CommandButton3_Click() 'Modificar
Application.ScreenUpdating = False
'xxxxxxx
Dim Mp As String
Mp = ComboBox1.Value
Sheets(Mp).Unprotect 'DESPROTEGE LA HOJA
Sheets(Mp).Activate
On Error GoTo 0
Range("b" & Cells.Rows.Count).End(xlUp).Offset(1).Select
ComboBox2.Value = ComboBox2
ActiveCell.Offset(0, 0).Value = ComboBox2 ' nombre
ActiveCell.Offset(0, 1).Value = TextBox1 ' Apellidos
ActiveCell.Offset(0, 2).Value = TextBox2 ' Dirección
ActiveCell.Offset(0, 3).Value = TextBox3 ' Telefonos
ActiveCell.Offset(0, 4).Value = TextBox8 ' Mail
ActiveCell.Offset(0, 5).Value = ComboBox3
ActiveCell.Offset(0, 6).Value = ComboBox4
ActiveCell.Offset(0, 7).Value = Val(TextBox4) ' Dia
ActiveCell.Offset(0, 8).Value = Val(TextBox5) ' Mes
ActiveCell.Offset(0, 9).Value = Val(TextBox6) ' Año
ActiveCell.Offset(0, 10).Value = TextBox7 ' Comentarios
'ActiveCell.Offset(0, 10).Value = TextBox9
Call Ordenar
ComboBox2 = "" 'Limpia el combobox2
Dim respuesta As Integer, ctr As Control
respuesta = MsgBox("Datos modificados", vbInformation, "AVISO")
If respuesta = vbOK Then
For Each ctr In Me.Controls
If TypeOf ctr Is MSForms.TextBox Then
ctr = ""
End If
Next ctr
ComboBox2.SetFocus
Exit Sub
End If
'Hoja1.Protect
Application.ScreenUpdating = True
'Hoja3.Select
'Mp.Protect
End Sub