¿Podrían revisar si esta Macro esta correcta o se le falta algo?

No se si esta correcta funciona en ocasiones y en otras no

La macro es para eliminar la data de una hoja para después copiar la data de otras hojas y compilarlas

Sub DataBase()
Application.ScreenUpdating = False
Range("A2:R5000").Select
Selection.ClearContents
For x = 2 To 11
Sheets(x).Select
columna = Range("mm1").End(xlToLeft).Column
ultima = Range("a65000").End(xlUp).Row
Range(Cells(2, 1), Cells(ultima, columna)).Copy
Sheets("Data Base").Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
Sheets("Dashboard").Select
Next
End Sub

Respuesta
1

.18.04.17

Buenas noches,

Habría que considerar los límites de filas y columnas que tienes en tu archivo.

Dado que la rutina contempla la celda MM1, me inclino a pensar que estás utilizando un archivo de las versiones nuevas de MS Excel (.xlsm) que tienen esa columna que se considera para identificar la última ocupada. Las versiones anteriores (.xls) sólo tenían a la IV, por lo que MM estaría más allá del límite.

Sin embargo, la buscar la última fila arranca desde la fila 65000 para identificar -subiendo desde allí- la última fila. En este punto, parecería que es un archivo que tienes una archivo de los viejos que tenían algunas pocas filas más.

Sí -como supongo- tu archivo tiene más lineas disponibles, aumentaría ese valor a 1.000.000 por si tuvieras más de 65.000 filas ocupadas (en ambas sentencias). Caso contrario, buscará la primera fila ocupada en lugar de la última.

Espero que puedas resolverlo con esos ajustes.

Saludos

Fernando

.

1 respuesta más de otro experto

Respuesta
3

Busca el fin de rango de este modo para asegurarte de tomar todas las filas/columnas en cualquier versión que utilices:

columna = Cells(1, Columns.Count).End(xlToLeft).Column

ultima = Range("A" & Rows.Count).End(xlUp).Row

Del mismo modo en esta línea:

Sheets("Data Base").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues

Tampoco pareciera que sea necesaria esta línea Sheets("Dashboard").Select.

Lo que estás haciendo es seleccionarla pero luego, al repetir el bucle con Next ya estás seleccionando otra.

Si tu idea es que al finalizar todo el proceso se coloque en hoja Dashboard coloca esa instrucción luego del Next.

Sdos y no olvides valorar las respuestas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas