Cortar fila al escribir en una celda de hoja1 y pegar en hoja2 + Dudas de novato
publicado
Hola, estoy intentado hacer mi primera macro.
Primeramente quiero hacer una cosa que creo que es sencilla, tengo dos hojas, hoja1 donde trabajo con la tabla de cosas que tengo en activo, y la hoja2 donde quiero que pasen las filas que digamos que ya he terminado
la celda G es donde al escribir o pegar una celda que tenga información, se da por hecho que esta acabada, entonces quiero que automáticamente, al ver algo escrito en esta celda, se haga un CUT&PASTE de la hoja 1 a la 2. En G evidentemente es a partir de G2, ya que en G1 estaría el encabezado de la tabla.
Al preguntar esto a chatgpt me recomendo esto
****
****
Para lograr lo que necesitas, puedes utilizar el evento Worksheet_Change en VBA, que se activa cada vez que se realiza un cambio en una hoja específica. Aquí te muestro cómo podrías implementar esta funcionalidad:
Abre el Editor de Visual Basic en Excel presionando Alt + F11 y luego inserta el siguiente código en la hoja de Excel donde deseas monitorear los cambios:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wsSource As Worksheet
Dim wsDestination As Worksheet
Dim changedCell As Range
Dim lastRow As Long
' Define las hojas de origen y destino
Set wsSource = ThisWorkbook.Sheets("Hoja1") ' Cambia "Hoja1" al nombre de tu hoja de origen
Set wsDestination = ThisWorkbook.Sheets("Hoja2") ' Cambia "Hoja2" al nombre de tu hoja de destino
' Define el rango de la celda que activa el evento
Set changedCell = Intersect(Target, wsSource.Range("A:A")) ' Observa los cambios en la columna A, cambia según tu necesidad
' Si la celda que cambió está en el rango observado
If Not changedCell Is Nothing Then
' Encuentra la última fila en la hoja de destino
lastRow = wsDestination.Cells(wsDestination.Rows.Count, "A").End(xlUp).Row + 1
' Copia la fila entera a la hoja de destino
wsSource.Rows(changedCell.Row).Copy wsDestination.Rows(lastRow)
End If
End Sub
Este código monitorea los cambios en la Hoja1.
Asegúrate de ajustar los nombres de las hojas ("Hoja1" y "Hoja2") según los nombres reales de tus hojas. Además, puedes modificar columnaTrigger para ajustarlo a la columna específica donde deseas detectar el cambio.
****
****
Como digo es mi primera macro y tengo dudas varias.
Esta macro quedaria siempre activa o debo de ejecutarla de algun modo, quiero que este siempre activa
Si cambiara el nombre de los libros, deberia cambiar el codigo de la macro?
El proceso de ALT+F11, escribir codigo y ya esta. o debo de guardarla de algun modo, ejecutarla por primera vez o no se.
Intentes seguir las indicaciones y algo debi hacer mal, porque no consegui nada.
Gracias por la atención, un saludo.
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Hola, estoy intentado hacer mi primera macro.
Primeramente quiero hacer una cosa que creo que es sencilla, tengo dos hojas, hoja1 donde trabajo con la tabla de cosas que tengo en activo, y la hoja2 donde quiero que pasen las filas que digamos que ya he terminado
la celda G es donde al escribir o pegar una celda que tenga información, se da por hecho que esta acabada, entonces quiero que automáticamente, al ver algo escrito en esta celda, se haga un CUT&PASTE de la hoja 1 a la 2. En G evidentemente es a partir de G2, ya que en G1 estaría el encabezado de la tabla.
Al preguntar esto a chatgpt me recomendo esto
****
****
Para lograr lo que necesitas, puedes utilizar el evento
Worksheet_Change
en VBA, que se activa cada vez que se realiza un cambio en una hoja específica. Aquí te muestro cómo podrías implementar esta funcionalidad:Abre el Editor de Visual Basic en Excel presionando Alt + F11 y luego inserta el siguiente código en la hoja de Excel donde deseas monitorear los cambios:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wsSource As Worksheet
Dim wsDestination As Worksheet
Dim changedCell As Range
Dim lastRow As Long
' Define las hojas de origen y destino
Set wsSource = ThisWorkbook.Sheets("Hoja1") ' Cambia "Hoja1" al nombre de tu hoja de origen
Set wsDestination = ThisWorkbook.Sheets("Hoja2") ' Cambia "Hoja2" al nombre de tu hoja de destino
' Define el rango de la celda que activa el evento
Set changedCell = Intersect(Target, wsSource.Range("A:A")) ' Observa los cambios en la columna A, cambia según tu necesidad
' Si la celda que cambió está en el rango observado
If Not changedCell Is Nothing Then
' Encuentra la última fila en la hoja de destino
lastRow = wsDestination.Cells(wsDestination.Rows.Count, "A").End(xlUp).Row + 1
' Copia la fila entera a la hoja de destino
wsSource.Rows(changedCell.Row).Copy wsDestination.Rows(lastRow)
End If
End Sub
Este código monitorea los cambios en la Hoja1.
Asegúrate de ajustar los nombres de las hojas ("Hoja1" y "Hoja2") según los nombres reales de tus hojas. Además, puedes modificar
columnaTrigger
para ajustarlo a la columna específica donde deseas detectar el cambio.****
****
Como digo es mi primera macro y tengo dudas varias.
Esta macro quedaria siempre activa o debo de ejecutarla de algun modo, quiero que este siempre activa
Si cambiara el nombre de los libros, deberia cambiar el codigo de la macro?
El proceso de ALT+F11, escribir codigo y ya esta. o debo de guardarla de algun modo, ejecutarla por primera vez o no se.
Intentes seguir las indicaciones y algo debi hacer mal, porque no consegui nada.
Gracias por la atención, un saludo.