Saber cuando ocupa un rango

30/03/2005 - 13:41 por Julio Ríos | Informe spam
Buenos días a todos, tengo una hoja y he programado una macro. Esta
macro actua sobre los registros de una hoja. En las pruebas que hice los
registros eran 4, pero la idea es que los datos sobre los cuales voy a
pasar la macros no las se de antemano, unas veces son 100, otras son
2000, otras 345, etc., estos registros los copio y pego de otra hoja que
se me proporciona.

Mi pregunta es ¿cómo puedo saber cuando acabo de copiar a una hoja en
blanco los registros que hay en la hoja para que se me pase la hoja en
todos los registros?

Al hacer la macro en el código aparece esto

Selection.End(xlDown).Select
Range("C4").Select

Y aquí es donde tengo el problema porque la macro selecciona C4 como
último registro, pero al copiar y pegar de otra hoja la macro sólo
actuará sobre los 4 primeros registros y no los datos que he copiado
desde otra hoja excel.


Un saludo, Julio.
 

Leer las respuestas

#1 KL
30/03/2005 - 14:20 | Informe spam
Hola Julio,

Para poder darte una solucion ajustada a tus necesidades lo mejor seria que
expongas el codigo completo. Ahora, como observaciones generales:

1) Por lo que leo en la descripcion del problema y el trozo de codigo que
expones, estas usando el metodo Select donde puedes prescindir de el
perfectamente.

2) Para encontrar la celda por debajo del ultimo valor en una columna
(suponiendo que la columna en cuestion es 'C') puedes usar la siguiente
instruccion:

ActiveSheet.Cells(65536,"C").End(xlUp).Offset(1,0)

3) Muchas veces las instrucciones mas eficientes para copiar rangos pueden
ser las siguientes:

a. si lo quieres copiar todo (incluidos los formatos):

Worksheets("Hoja1").Range("C5:K5").Copy _
Worksheets("Hoja2").Cells(65536,"C").End(xlUp).Offset(1,0)

b. si solo quieres copiar valores:

With Worksheets("Hoja1").Range("C5:K5")
Worksheets("Hoja2").Cells(65536, "C"). _
End(xlUp).Offset(1, 0).Resize(.Rows.Count, _
.Columns.Count).Value = .Value
End With

Saludos,
KL


"Julio Ríos" wrote in message
news:
Buenos días a todos, tengo una hoja y he programado una macro. Esta macro
actua sobre los registros de una hoja. En las pruebas que hice los
registros eran 4, pero la idea es que los datos sobre los cuales voy a
pasar la macros no las se de antemano, unas veces son 100, otras son 2000,
otras 345, etc., estos registros los copio y pego de otra hoja que se me
proporciona.

Mi pregunta es ¿cómo puedo saber cuando acabo de copiar a una hoja en
blanco los registros que hay en la hoja para que se me pase la hoja en
todos los registros?

Al hacer la macro en el código aparece esto

Selection.End(xlDown).Select
Range("C4").Select

Y aquí es donde tengo el problema porque la macro selecciona C4 como
último registro, pero al copiar y pegar de otra hoja la macro sólo actuará
sobre los 4 primeros registros y no los datos que he copiado desde otra
hoja excel.


Un saludo, Julio.


Preguntas similares