Saltar al contenido

¿cómo fijar última columna y última Fila en vba con variable?


Recommended Posts

publicado

Buenas tardes aquí solicitando de su apoyo, alguien me puede corregir de favor

tengo los siguientes variables

Tengo establecido estos variables para determinar mi última columna puesto que a veces mi base de datos trae 10 columnas y otras veces mas (cantidad variable) hasta aquí parece funcionar

1.- uc = Sheets("Hoja1").Range(Sheets("Hoja1").Range("a8"), Sheets("Hoja1").Range("a8").End(xlToRight)).Columns.Count

2 .-Tengo esto para determinar mi ultima fila referenciando la ultima columna , no se por que pero en otras columnas no puedo usarlos para determinar mi ultima fila ocupada , me imagino que ha de traer caracteres ocultos o de color blanco pero no  se estampa con mis datos , se estampa 2 filas abajos de donde se encuentra mis datos  y eso no sucede en la ultima columna, sin embargo me arroja error en esta variable


 

ultimf = Range(uc & Rows.Count).End(xlUp).Row

3.deseo ocuparlo en esta parte :

Range("c" & ultimf & ":At" & ultimf).Copy

 

Gracias 

publicado

saludos @CECILIO, hay varias formas, te muestro dos

nFilas = Worksheets("Hoja1").Range("A4").CurrentRegion.Rows.Count
nColumnas = Worksheets("Hoja1").Range("A4").CurrentRegion.Columns.Count
    
Worksheets("Hoja1").Range("A4").CurrentRegion.Offset(nFilas - 1, 0).Resize(1).Copy

con esto obtienes la ultima fila y la ultima columna del rango continuo asociado a "A4" (en este ejemplo), lo único que debes tener en cueta es que si alguna fila vacia anterioremente tenia datos, y está contigua a la tabla, será tomada en consideracion, igual sucede con la columna.

Un ejemplo, tienes una tabla en el rango "A4:Z39" (todo con datos), y por necesidad borras los datos de la fila 39 (NO eliminas la linea, solo borras los datos), con esta forma, nFilas dira la ultima fila es 39 y NO estaría bien, pues la última fila con datos es la 38 (borraste los datos de la 39)

otra forma sería asi:

nFilas = Worksheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row
nColumnas = Worksheets("Hoja1").Cells(4, Columns.Count).End(xlToLeft).Column
    
Worksheets("Hoja1").Range("A4").Offset(nFilas - 4).Resize(1, nColumnas).Copy

en este caso, la columna la buscas en el encabezado de la tabla (siempre tendras datos alli).

y la fila la buscas en la columna donde siempre tengas datos (una columna con datos obligatorios)

y asi te aseguras que siempre copiaras la informacion correcta.

por lo general yo suelo usar esta segunda opción

suerte

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.