Ayuda con este desarrollo

A quien pueda ayudarme le estaré agradecido...
Tengo el siguiente desarrollo en excel el cual me divide en varias columnas por hoja una tira de extensa ( aprox. 50000) de códigos y precios de productos...
La dificultad está, creo yo, en algo de memoria, porque dependiendo del numero de fials que le asigne varia el momento en que me da el ERRO DE EJECUCIÓN 1004...
¿Alguien podrá corregirlo?
Sub dividir()
Dim franjas As Integer
'Sheets("Hoja1").Select
'Cells.Select
'Selection.Clear
'Range("A1").Select
Sheets("base").Select
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Copy
Sheets.Add
'Sheets("Hoja1").Select
ActiveSheet.Paste
filas = InputBox("Ingrese el número de filas")
ActiveCell.Select
Selection.ColumnWidth = 19
Selection.Offset(0, 1).ColumnWidth = 8.5
Selection.Offset(0, 2).ColumnWidth = 1
franjas = 1
ActiveCell.Offset(filas, 0).Select
Do While Not IsEmpty(ActiveCell)
franjas = franjas + 1
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Cut
If franjas > 84 Then
Sheets.Add
franjas = 1
Else
ActiveCell.Offset(0, 3).Select
Selection.End(xlUp).Select
End If
ActiveSheet.Paste
ActiveCell.Select
Selection.ColumnWidth = 19
Selection.Offset(0, 1).ColumnWidth = 8.5
Selection.Offset(0, 2).ColumnWidth = 1
ActiveCell.Offset(filas, 0).Select
Loop
End Sub

1 Respuesta

Respuesta
1
Lo probé y corre bien
Se puede producir el 1004 en función si desde la hoja "base" la columna B esta Vacía. Lo cual provoca que el rango seleccionado sea desde col A hasta la IV luego por consiguiente no puedes "cortar y pegar " hacia la derecha, pues estarías intentando pegar más columnas que las que puede contener la hoja.
Antes que nada muchas gracias por tu interés...
Te agrego los siguientes datos, quizás me puedas ayudar a resolver el conflicto:
Es verdad que existen celdas en la columna B, de la hoja"base", vacías... ¿decís qué esto produce el error?.
Si le asigno por ejemplo 64 filas por columna se corta en el dato correspondiente a la celda A7297 de la hoja "base", y divide en:
La primer hoja hasta la columna IP (datos columna A) IQ (datos columna B); y en la segunda hoja se corta en la columna CJ (datos columna A) CK (datos columna B).
Si le asigno por ejemplo 63 filas por columna se corta en el dato correspondiente a la celda A5860 de la hoja "base", y divide en:
La primer hoja hasta la columna IP (datos columna A) IQ (datos columna B); y en la segunda hoja se corta en la columna Y (datos columna A) Z (datos columna B).
AGRADEZCO PO R TU SOLUCION o modificacion de la macro 'para salvar el error.
Muchas gracias
Si tienes datos vacíos en B entonces esta linea
Range(Selection, Selection.End(xlToRight)).Select
Provoca que el rango seleccionado sea hasta la ultima columna de la hoja Base en consecuencia te dará problemas en el cut y paste.
¿Probaste correr el macro sin tener celdas vacías en B?
Yo lo corrí con 50.000 registros en col A y B ( sin celdas vacías ) y funciona oK.
Lo corrí con 64 y 63 filas por bloque como tu y no da problemas.
Gracias ...
Eran unas celdas combinadas de títulos las que provocaban el error...
Eso se puede solucionar en la macro...
Genial respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas