Saltar al contenido

Error 1004 en tiempo de ejecución - No logro encontrar el por qué, ya que sólo pasa a veces


Recommended Posts

publicado

Buenas, necesito ayuda con esta macro. La vengo usando hace ya años, pero de repente sale este error:

"Error '1004' en tiempo de ejecución", pero no consigo saber a qué se debe. Además sólo pasa de vez en cuando. ¿Alquien podría echarme una mano?

Sería en la hoja de presupuesto: creando capítulos y añadiendo partidas (es al crear nuevas partidas cuando falla).

Muchas gracias por adelantado!!

Estoy intentando subir el archivo en zip pero no me deja, ¿cómo lo podría subir?

publicado

No me deja, es demasiado grande y no sé cómo hacerlo para recortar sin tocar lo importante. Te paso la macro por escrito por si pudieras mirarla y ver si ahí está el fallo:

INSERTAR CAPÍTULO

Private Sub CommandButton3_Click()

Range("a15").Select

If Range("a15") = Empty Then

Do While ActiveCell <> Empty

ActiveCell.Offset(1, 0).Select

Loop

Worksheets("BASE PARTIDAS").Range("A20:AA23").Copy

Worksheets("PRESUPUESTO").Select

ActiveCell.Insert Shift:=xlShiftDown

ActiveCell.Offset(rowOffset:=0, columnOffset:=3).Activate

With Selection.Font

.Name = "Arial"

.Size = 14

Selection.Font.Bold = True

End With

Else

Do While ActiveCell <> Empty

ActiveCell.Offset(1, 0).Select

Loop

For x = 1 To 4

ActiveCell.FormulaR1C1 = "."

ActiveCell.Offset(1, 0).Select

Next x

Worksheets("BASE PARTIDAS").Range("A20:AA23").Copy

Worksheets("PRESUPUESTO").Select

ActiveCell.Insert Shift:=xlShiftDown

ActiveCell.Offset(rowOffset:=0, columnOffset:=3).Activate

With Selection.Font

.Name = "Arial"

.Size = 14

Selection.Font.Bold = True

End With

Gracias!!

publicado

amigo CARMENCIMI, el error 1004 tiene que ver con problemas a la hora de copiar/pegar datos en la hoja de excel, así con esta información es dificil ayudarte, sin embargo te dejo algunas recomendaciones que pudieran ayudarte

Private Sub CommandButton3_Click()

Range("a15").Select
If Range("a15") = Empty Then
'--------------------------------------------------------------------------------
'SI el rango A15 está vacio, esta instruccion DO While.... nunca se va a ejecutar
'ya que se ejecutaria si la celda activa NO esta vacia, y si está vacia
'--------------------------------------------------------------------------------
'--------------------------------------------------------------------------------
'igualmente, me imagino que esta instruccion lo que busca es la última fila con
'datos en la columna A cierto?, si es así sería mas fácil, mas rápido y mas
'seguro colocar esto:
' Range("A" & Rows.Count).End(xlUp).Select
'con esto te posicionas la última fila con datos
'--------------------------------------------------------------------------------
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
Loop

'--------------------------------------------------------------------------------
'aquí copias unos datos de otra hoja, y los insertas desde la celda activa (que
'es la última de la instruccion anterior)
'pues si debajo de esa ultima celda activa NO hay nada (todo esta vacio), es mas
'facil hacer un pegado de datos que insertarlos
'pudieras probar esto
' ActiveSheet.Paste
' o esto otro
' Selection.PasteSpecial xlPasteAll
' en vez de la línea: ActiveCell.Insert Shift:=xlShiftDown
'--------------------------------------------------------------------------------
Worksheets("BASE PARTIDAS").Range("A20:AA23").Copy
Worksheets("PRESUPUESTO").Select
ActiveCell.Insert Shift:=xlShiftDown
ActiveCell.Offset(rowOffset:=0, columnOffset:=3).Activate

'--------------------------------------------------------------------------------
'aqui puedes reemplazar
' Selection.Font.Bold = True
' por
' .Bold = True
'--------------------------------------------------------------------------------
With Selection.Font
.Name = "Arial"
.Size = 14
Selection.Font.Bold = True
End With

Else
'--------------------------------------------------------------------------------
'igualmente, me imagino que esta instruccion lo que busca es la última fila con
'datos en la columna A cierto?, si es así sería mas fácil, mas rápido y mas
'seguro colocar esto:
' Range("A" & Rows.Count).End(xlUp).Select
'con esto te posicionas la última fila con datos
'--------------------------------------------------------------------------------
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
Loop

'--------------------------------------------------------------------------------
'aquí estas colocando un punto (.) en 4 filas desde la celda activa?, sería mas
'facil con esto
' ActiveCell.Resize(4, 1).Value = "."
'--------------------------------------------------------------------------------
For x = 1 To 4
ActiveCell.FormulaR1C1 = "."
ActiveCell.Offset(1, 0).Select
Next x

'--------------------------------------------------------------------------------
'aquí copias unos datos de otra hoja, y los insertas desde la celda activa (que
'es la última de la instruccion anterior)
'pues si debajo de esa ultima celda activa NO hay nada (todo esta vacio), es mas
'facil hacer un pegado de datos que insertarlos
'pudieras probar esto
' ActiveSheet.Paste
' o esto otro
' Selection.PasteSpecial xlPasteAll
' en vez de la línea: ActiveCell.Insert Shift:=xlShiftDown
'--------------------------------------------------------------------------------
Worksheets("BASE PARTIDAS").Range("A20:AA23").Copy
Worksheets("PRESUPUESTO").Select
ActiveCell.Insert Shift:=xlShiftDown
ActiveCell.Offset(rowOffset:=0, columnOffset:=3).Activate

'--------------------------------------------------------------------------------
'aqui puedes reemplazar
' Selection.Font.Bold = True
' por
' .Bold = True
'--------------------------------------------------------------------------------
With Selection.Font
.Name = "Arial"
.Size = 14
Selection.Font.Bold = True
End With
End Sub[/CODE]

[color=#ff0000][b]nota[/b][/color]: si puedes subir una parte de tu libro (elimina lo innecesario) sería mas fácil ayudarte, suerte

publicado

Gracias Bigpetroman. Entiendo que sería mucho más sencillo de ver con el archivo, pero por más que he tratado de reducir el tamaño quitando partes de él, no consigo que sea del tamaño adecuado para adjuntar al foro. ¿Está permitido en el foro dar enlaces de "Drive"? Si se pudiera sería estupendo.

Gracias de nuevo,

publicado

Sin problemas, puedes dar enlaces de cualquier servidor externo para bajar archivos pesados. (Dropbox, Sky Drive, etc)

Esta consulta sin el archivo es imposible de resolver.

publicado

Error ejecutando la línea: ActiveCell.Insert Shift:=xlShiftDown

El error se produce porqué tienes algo así como 2.600 líneas al final de la hoja PRESUPUESTO, lo que hace imposible insertar mas datos al principio, quítalas y problema resuelto.

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.