Copiar datos de textbox a otra hoja

Tengo una consulta estoy que realizo un formulario donde tengo como primer criterio la búsqueda de un código que se encuentra en la columna "A" y después se completan los siguientes datos de las columnas adyacentes respecto a la fila del código previamente buscado en los textbox .

Para Dante Amor: ¿La pregunta como haría para que el código que consulte y las columnas adyacentes hasta "O" sean copiados en la hoja "Historiales " a partir de la fila numero 6 y así consecutivamente una debajo de otra fila cada vez que le de copiar?, Tenia pensado dos caminos el de trabajar en función con los textbox colocando el valor de todos en la otra hoja, pues lo veo muy complicado, por si acaso adjunto los códigos empleados en mi programa:

Dim rango As Range
Private Sub botonx_Click()
'Boton de consulta
Sheets("PlanDeMonitoreo").Activate
Dim rango As Range
If Mod1 = "" Then
MsgBox " No has introducido el codigo para buscar ", vbOKOnly + vbInformation, "ATENCION!"
Mod1.SetFocus
Exit Sub
End If
Set rango = Range("A:A").Find(what:=Mod1, _
LookAt:=xlWhole, LookIn:=xlValues)
If rango Is Nothing Then
MsgBox " El codigo no se encuentra en la base de datos ", vbOKOnly + vbInformation, "ATENCION!"
Mod1 = "": Mod1.SetFocus
Exit Sub
Else
Mod1 = Range("A" & rango.Row)'codigo de material
Mod2 = Range("B" & rango.Row)'nombre material
con2 = Range("C" & rango.Row)'nivel de riesgo
con3 = Range("D" & rango.Row)'frecuencia de analisis
Mod5 = Range("E" & rango.Row)'espef. fabri
con1 = Range("F" & rango.Row)'nombre fabricante
Mod7 = Range("G" & rango.Row)'justificacion
Mod8 = Range("H" & rango.Row)'composicion quimica
Mod9 = Range("I" & rango.Row)'origen
Mod10 = Range("J" & rango.Row)'ph informativo
Mod11 = Range("K" & rango.Row)'sust. antimicro
Mod12 = Range("L" & rango.Row)'historial cambios plan
Mod13 = Range("M" & rango.Row)'histor conta col
Mod14 = Range("N" & rango.Row)'histor conta ecu
Mod15 = Range("O" & rango.Row)'histor conta per
End If
End Sub

1 respuesta

Respuesta
2

H o la: Yo pondría el código en el botón Modificar, de esa forma, primero se copia el registro antes de ser actualizado, para tener el historial y después se realiza el cambio. Prueba y me comentas:

Private Sub CommandButton2_Click()
'Por.Dante Amor
    'Modificar
    If ComboBox3 = "" Or ComboBox3.ListIndex = -1 Then
        MsgBox "Selecciona un fabricante", vbExclamation, "AVISO"
        ComboBox3.SetFocus
        Exit Sub
    End If
    If TextBox1 = "" Then
        MsgBox "Coloca algun dato para buscar", vbExclamation, "AVISO"
        TextBox1.SetFocus
        Exit Sub
    End If
    Set rango = Range("A:A").Find(What:=TextBox1, LookAt:=xlWhole, LookIn:=xlValues)
    If rango Is Nothing Then
        MsgBox "El código no fue encontrado", vbExclamation, "AVISO"
        TextBox1 = "": TextBox1.SetFocus
        Exit Sub
    End If
    '
    'Copiar fila
    Set h2 = Sheets("Historiales")
    u2 = h2.Range("F" & Rows.Count).End(xlUp).Row + 1
    If u2 < 6 Then u2 = 6
    Rows(rango.Row).Copy h2.Rows(u2)
    '
    'Reemplazar
    Cells(rango.Row, "F") = ComboBox3
    TextBox7 = Cells(rango.Row, "F")
    MsgBox "Fabricante reemplazado", vbInformation, "CAMBIAR FABRICANTE"
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Estaría bien como para hacer un backup, pero el problema es que si aveces en modificar le envés de poner fabricante Toyota pondría "ToyoTa" seria un cambio no tan vital para los datos, por lo cual digamos quiera cambiar de toyota a "Nissan " seria un cambio radical para mi base de datos por lo cual quiero poner el "programa " para copiar toda la fila del código buscado en el botón copiar :/

Y si quiero copiar, el código, nombre de materia, y las demás columnas completaría el código como :

u2 = h2.Range("F" & Rows.Count).End(xlUp).Row + 1
     h2.Range("A" & Rows.Count).End(xlUp).Row + 1 
¿Sucesivamente?

No deberías cambiar de "Toyota" a "ToyoTa", porque estás utilizando un combo, entonces en el combo solamente deberías tener "Toyota". Y si lo tienes mal escrito y lo vas a cambiar a "ToyoTa", entonces sí debería almacenarse en el historial, ya que estás corrigiendo un dato.

Pero esa es mi opinión.

Si creas un programa para enviar a otra hoja, podrás enviar cualquier registros, se haya modificado o no.

Entonces pon esto en otro botón:

Private Sub CommandButton5_Click()
'Por.Dante Amor
    'Copiar
    If TextBox1 = "" Then
        MsgBox "Coloca algun dato para buscar", vbExclamation, "AVISO"
        TextBox1.SetFocus
        Exit Sub
    End If
    Set rango = Range("A:A").Find(What:=TextBox1, LookAt:=xlWhole, LookIn:=xlValues)
    If rango Is Nothing Then
        MsgBox "El código no fue encontrado", vbExclamation, "AVISO"
        TextBox1 = "": TextBox1.SetFocus
        Exit Sub
    End If
    '
    'Copiar fila
    Set h2 = Sheets("Historiales")
    u2 = h2.Range("F" & Rows.Count).End(xlUp).Row + 1
    If u2 < 6 Then u2 = 6
    Rows(rango.Row).Copy h2.Rows(u2)
    '
    MsgBox "Registro copiado", vbInformation, "CAMBIAR FABRICANTE"
End Sub

Esta línea sirve para encontrar la última celda con datos de la columna "F"

u2 = h2.Range("F" & Rows.Count).End(xlUp).Row + 1

Una vez que se obtiene la última celda con datos, le sumo + 1, con eso obtienes la siguiente fila vacía.

Y con lo siguiente copia toda la fila, copia la fila encontrada a la fila vacía:

Rows(rango. Row). Copy h2. Rows(u2)

Ya está copiando toda la fila, por lo tanto, no tienes que hacer esto:

u2 = h2.Range("F" & Rows.Count).End(xlUp).Row + 1
     H2.Range("A" & Rows. Count).End(xlUp).Row + 1 

sal u dos

Gracias Dante por toda la ayuda que me has brindado hasta el momento, justo lo que quería y explicándome las líneas del código muchas gracias !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas