Corregir función que pegue los datos en la fila correspondiente de la base de datos.

Hola dante… creo que por esta ocasión será la última… pido tu apoyo de nuevo… tengo esta macro que es para modificar datos que obtengo en el USERFORM1 con el botón consultar y que se encuentran en su base de datos en orden alfabético por nombre y en  Col. “B”. El caso es que cuando modifico uno o más datos, al accionar el botón “Modificar”, estos se colocan bien en la columna correspondiente pero en la última fila de la base de datos. Pido tu colaboración para corregir esa función que lo ordene en la fila que le corresponde… Muchas gracias por tus atenciones…

 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

‘xxxxxxxx

'Set b = h1.Columns("B").Find(ComboBox1, LookAt:=xlWhole)

Range("b" & Cells.Rows.Count).End(xlUp).Offset(1).Select 'este es el mejor pero no los coloca en la fila correspondiente.

'xxxxxxxxx

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

Application.ScreenUpdating = True

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

'Mp.Protect

End Sub

1 Respuesta

Respuesta
1

Primero debes encontrar la fila que le corresponde, para eso necesito saber cómo encontrar la fila, ¿alguno de los datos es un campo clave único?, es decir, tenemos que encontrar un único registro en la hoja y con eso sabremos que ese registro es el que se va a modificar. La otra opción es que me digas cómo cargaste los datos a los controles, de esa forma podemos poner la la celda activa en ese registro y cuando presiones modificar, entonces que empiece en la celda activa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas