Macro que guarda con espacios y modifica la información ingresada.

Buenas,

De la manera más amable solicito ayuda para crear una macro que guarde información de una hoja a otra, dejando espacios, y que a su vez le modifique valores estéticos a la información ingresada. La macro que tengo inicia buscando la ultima celda escrita desde el final hasta el inicio de la hoja.

' Guarda_Informacion Macro
Range("B1048576").Select
Selection.End(xlUp).Select

Ahora lo que requiero es que que se ubique en la columna A y deje un espacio para pegar la información solicitada. Seguido requiero que se hagan cambios estéticos y de formato en celdas especificas que fueron ingresadas.

Agradezco la atención prestada.

Cordial saludo.

1 Respuesta

Respuesta
1

Digamos que tenés 1 macro de 1 sola línea ;)

Como no hay muchas referencias (qué tipos de formatos, ni cuánto espacio dejar, etc) lo mejor es que trabajes con la grabadora de macros,

Encendé el botón que se encuentra en barra de estado (abajo a la izquierda) y realizá todos los pasos: copiar el rango, pegarlo y darle formato a tu gusto.

Luego detené la grabadora y en un módulo del Editor tendrás la rutina.

Si luego necesita algún ajuste para sucesivas ejecuciones, escribila aquí indicando qué cambios necesitas hacerle.

PD) Te invito a descargar la demo del manual Programación VBA 2007-2010. Allí encontrarás los 2 primeros capítulos desarrollados completos.

Buenas Elsa,

De antemano agradezco la rapidez en tu respuesta, pero creo que no fuí lo suficientemente claro, ya que mi mayor problema es hacer que cuando se encuentre la última celda escrita, en la columna B, luego encuentre la ultima fila escrita en la columna A (es decir que haga un End(xlLeft) como se muestra a continuación), y comience a pegar la información requerida dos celdas abajo de la ultima celda encontrada. Este proceso de movimiento no queda registrado de manera automática en el editor de macros de excel, por lo que solicito se indique si debe registrarse una variable, o si hay alguna otra forma para proceder. Adjunto código para que puedas entender un poco mi consulta.

Sub BuscaCeldaActiva()
' Buscar Celda Activa
Sheets("EDIFICIO P").Select
Range("B1048576").Select
Selection.End(xlUp).Select
Selection.End(xlToLeft).Select

Por lo tanto luego de esto, requiero que empiece a pegar la información seleccionada dos celdas debajo de la encontrada con el End(xlleft).

Agradezco la atención prestada.

Cordial Saludo

Vamos a utilizar 2 variables solo para luego saber cómo sigue el proceso:

Sub BuscaCeldaActiva()
' Buscar Celda Activa
Sheets("EDIFICIO P").Select
libreB = Range("B1048576").End(xlUp). Row 'aqui la última fila con datos en B

libreA = Range("A1048576").End(xlUp). Row 'aqui la última fila con datos en A

Si la col A se encuentra en otra hoja te quedaría así, donde ya la estoy incrementando en 2

libreA = Sheets("HojaA").Range("A1048576").End(xlUp).Row +2

Ahora, para resolver esta parte: comience a pegar la información requerida, mejor me lo aclaras también. Al inicio hablabas de otra hoja,...

Por ejemplo: copiar rango B desde la fila 2 hasta la última encontrada y pegado en col A de otra hoja:

Range("B2:B" & libreB).Copy Destination:=Sheets("HojaA").Range("A" & libreA)

Reemplazá HojaA x el nombre de tu hoja o quitalo si se trata de la misma hoja.

PD) Mucho tiempo te evitas y nos evitas si desde un vamos aclaras paso a paso lo que necesitas.. y no olvides aclarar tu versión Excel, muchas cosas han cambiado y así te podemos brindar una respuesta más precisa.

Hola Elsa,

Agradezco la disposición para atender mi consulta te informo que me sirvió de mucho tu consejo y forma de pensar el código, pero debido a mi necesidad particular encontré una forma que se adaptaba un poco más a lo requerido, por lo que adjunto lo que realice para resolver mi tema en particular, igualmente lo hago para que otras personas que tengan la misma dificultad y requerían algo parecido a lo que yo necesitaba puedan guiarse:

Sub BuscaCeldaActivayPegaConEspacios()

Sheets("Hoja 1").Select
Range("B1048576").Select
Selection.End(xlUp).Select
Selection.End(xlToLeft).Offset(2, 0).Select

End sub

Agradezco la atención prestada.

Cordial saludo,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas