Cortar y pegar fila de una hoja a otra con doble click en una celda
Necesito una macro que me ayude a cortar una fila entera, dando doble click en la última celda de esta misma fila y que la copie en la primera fila vacía de la segunda hoja.
1 Respuesta

[Hol a y bienvenido a TodoExpertos.
Pon el siguiente código en los eventos de la hoja donde quieres dar doble clic.
Cambia en el código las "D" por la columna donde quieres dar doble clic
Cambia en el código "Hoja2" por el nombre de la hoja donde quieres pegar.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim lr As Long If Not Intersect(Target, Range("D:D")) Is Nothing Then With Sheets("Hoja2") lr = .Range("D" & Rows.Count).End(3).Row + 1 Target.EntireRow.Copy .Range("A" & lr) Target.EntireRow.Delete End With End If End Sub
Sigue las Instrucciones para poner la macro en los eventos de worksheet
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
- En el panel del lado derecho copia la macro
- Regresa a excel, presiona doble clic en alguna celda de la columna "D" y la fila será movida a la hoja2.
[Al final de mi respuesta hay botón para valorar.

Hola,
La macro no acaba de funcionar correctamente.
Cuando ejecuto con doble click, la fila si desaparece de la primera hoja pero no se copia en la segunda hoja. Directamente desaparece del todo. Se borra y no se copia en ninguna parte.

Revisa la última fila con datos de la segunda hoja. Tal vez las filas se están copiando muy abajo y no las ves.

Realiza lo siguiente. Borra por completo los datos de la Hoja2, como si fuera una hoja limpia.
Regresa a la hoja1 y presiona dobleclick en una fila con datos. Ahora ve a la hoja2 y revisa los datos.

Hola,
Ya había probado haciendo búsqueda de palabras con ctrl B, y no encuentra nada. He revisado hasta la última fila de la hoja2 y nada.
Probaré lo de borrar el encabezado que tengo en la segunda hoja para ver si ese es el problema...
Te explico: tanto en la hoja1 como en la 2 tengo ocupadas varias celdas con la misma información. Idéntico en las 2 hojas. Ocupo 4 filas y hasta la columna K

Hola,
He probado borrar las filas de la hoja2 y exactamente como tu decías se copia a partir de la fila 2, y cuando quiero pasar más datos de la hoja1 a la hoja2, no copia en la siguiente fila vacía, si no que sustituye las líneas.

En esta línea de la macro
lr = .Range("D" & Rows.Count).End(3).Row + 1
Cambia la letra "D" por la letra de la columna donde siempre tengas datos.
Yo supuse que si ibas a dar dobleclic en una celda de la columna D, es por que en esa celda tienes datos.
Y como te comenté desde un inicio, debes cambiar las letras "D" por las letras de la columna donde vas a dar doble clic y en este caso, por la columna donde siempre tengas datos.
Prueba con esta macro
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim lr As Long If Not Intersect(Target, Range("D:D")) Is Nothing Then With Sheets("Hoja2") lr = .Range("D" & Rows.Count).End(3).Row + 1 Target.EntireRow.Copy .Range("A" & lr).PasteSpecial xlPasteValues Target.EntireRow.Delete End With End If End Sub
Si tienes problemas para adaptar la macro. Dime en cuál columna le vas a dar dobleclic y en cuál columna siempre tienes datos.
[Al final de mi respuesta hay botón para valorarla.

Sigue sin funcionar como desearía.
Ya te comenté que en las 2 hojas tengo un encabezado idéntico que ocupa 6 filas y hasta la columna K.
En la columna K es donde doy el dobleclick una vez pongo una fecha determinada.
Quiero que copie exactamente lo mismo en la hoja2 pero debajo del encabezado en caso de ser la primera vez que paso datos a hoja2 y que las siguientes, se copien debajo de la primera fila vacía que tenga en hoja2.
Te adjunto fotos a ver si así lo conseguimos. Muchas gracias por todo.

No utilices celdas combinadas.
Prueba en un nuevo libro. No utilices celdas combinadas.
Si vas a dar doble click en la columna K entonces utiliza lo siguiente:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim lr As Long If Not Intersect(Target, Range("K:K")) Is Nothing Then With Sheets("HISTORICO") lr = .Range("K" & Rows.Count).End(3).Row + 1 Target.EntireRow.Copy .Range("A" & lr).PasteSpecial xlPasteValues Target.EntireRow.Delete End With End If End Sub
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(SALDOS)
- En el panel del lado derecho copia la macro
Si tienes problemas para poner el código, envíame tu archivo por correo.
- Compartir respuesta
