Macro: "Se ha producido un error (1004) en tiempo de ejecución. Error definido por la aplicación del objeto"

Gusto en saludarles.
Mis conocimientos sobre macros son muy pocos, motivo por el cual acudo a ustedes para solicitar muy respetuosamente el apoyo de los expertos en la materia.
Realicé una macro con la grabadora habilitando la opción Usar referencias relativas, pero al ejecutarla me presenta el siguiente mensaje "Se ha producido un error (1004) en tiempo de ejecución. Error definido por la aplicación del objeto". A continuación la macro:

Sub Macro8()

ActiveCell.Offset(-11, -1).Range("A1:M1").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
ActiveCell.Offset(1, 12).Range("A1").Select
Selection.Copy
ActiveCell.Offset(-1, 0).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(0, -12).Range("A1").Select
Selection.ClearContents
ActiveCell.Offset(0, 2).Range("A1").Select
Selection.ClearContents
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.ClearContents
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.ClearContents
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.ClearContents
ActiveCell.Offset(0, 2).Range("A1").Select
Selection.ClearContents
ActiveCell.Offset(0, 2).Range("A1").Select
Selection.ClearContents
End Sub

Hice la prueba haciendo la macro deshabilitando el uso de referencias relativas y funciona perfecto, pero necesito que la macro funcione en cualquier celda que quiera ejecutarla. A continuación la macro;

Sub Macro7()

Range("A2:M2").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
Range("M3").Select
Selection.Copy
Range("M2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A2").Select
Selection.ClearContents
Range("C2").Select
Selection.ClearContents
Range("D2").Select
Selection.ClearContents
Range("E2").Select
Selection.ClearContents
Range("F2").Select
Selection.ClearContents
Range("H2").Select
Selection.ClearContents
Range("J2").Select
Selection.ClearContents
End Sub

De antemano muy agradecida por la valiosa ayuda que puedan brindarme, y les comento que muy probablemente estaré muy activa solicitando su apoyo, ya que estoy desarrollando dos nuevos proyectos laborales que requieren el uso de Excel.

1 Respuesta

Respuesta
2

Te recomiendo utilizar un nombre de usuario o alias en lugar de ocultarte en el anonimato, así podemos realizar un seguimiento de tus consultas y sabremos cuáles son los puntos que requieren mayores aclaraciones.

Como no dejas indicado en qué línea te aparece el mensaje de error, solo te presento otras maneras de escribir código en la parte de la limpieza, en la Macro7:

'No es necesario seleccionar la celda para darle una tarea
'otras maneras de escribir lo mismo
Range("A2"). ClearContents 'sin seleccionar
Range("C2:F2"). ClearContents 'indicando rango continuo
Range("H2, J2"). ClearContents 'indicando rango discontinuo

La misma idea tenés que aplicar en la Macro8.

Es muy posible que falle en la instrucción inicial donde le estás diciendo que selecciona la celda que se encuentra 11 col a izquierda y 1 fila por arriba... pero no sabemos cuál era tu celda activa al momento de llamar la macro. Y quizás no se pudo mover a esa nueva ubicación.

ActiveCell.Offset(-11, -1).Range("A1:M1").Select

Probala nuevamente y si falla presioná el botón DEPURAR y luego me envias imagen o nota de la línea de color donde se detuvo.

Si esta respuesta resuelve tu consulta no olvides valorarla (Excelente o Buena) sino aclara los detalles y la seguimos tratando.

PD) Desde la sección Macros y Ejemplos podés tomar nota de más instrucciones vba.

Sdos.

Elsa

http://aplicaxcel.galeon.com/macros.htm

Buenas tardes Elsa Matilde.

Gracias de antemano por tu ayuda y tu pronta respuesta.

La macro genera error en la siguiente línea: ActiveCell.Offset(-6, -3).Range("A1:M1").Select

He grabado la macro una vez más y generó el siguiente código que de igual manera da error

Sub Macro1()
ActiveCell.Offset(-6, -3).Range("A1:M1").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
ActiveCell.Range("A1,C1,D1,E1,F1,H1,J1").Select
ActiveCell.Offset(0, 9).Range("A1").Activate
Selection.ClearContents
ActiveCell.Offset(0, 3).Range("A1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[-9]-RC[-7]-RC[-4]-RC[-1]"
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

La macro siempre se ejecutará a partir de la columna E en cualquiera de sus filas y debe realizar lo siguiente:

  1. Seleccionar desde la columna E hasta la columna Q
  2. A las celdas seleccionadas (desde columna E hasta Q) aplicar la opción fondo sin relleno y fuente color automático
  3. Borrar el contenido de las celdas E, G, H, I, J, L, y N
  4. En Q2 colocar la fórmula =H-J-M-P

Nuevamente muchas gracias por tu valiosa ayuda

Te dejo la macro ajustada.

Sub Macro1()
'ajustada x Elsamatilde
'se ejecuta para la col E:Q en la fila activa
    x = ActiveCell.Row
    Range("E" & x & ":Q" & x).Select
        'ActiveCell.Offset(-6, -3).Range("A1:M1").Select
'formatos
    With Selection.Interior
    .Pattern = xlNone
    .TintAndShade = 0
    .PatternTintAndShade = 0
    End With
    With Selection.Font
    .ColorIndex = xlAutomatic
    .TintAndShade = 0
    End With
'limpieza
    Range("E" & x).ClearContents
    Range("G" & x & ":J" & x).ClearContents
    Range("L" & x).ClearContents
    Range("N" & x).ClearContents
'formula.... revisar
    ActiveCell.Offset(0, 3).Range("A1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=RC[-9]-RC[-7]-RC[-4]-RC[-1]"
    ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

Para la limpieza se podría hacer una cadena pero te lo dejo así para que veas paso a paso cómo instruirlo.

La parte de la fórmula no la comprendí, dejo tus instrucciones. Seguramente con el ejemplo del uso de una variable podrás ajustar esa instrucción. Sino escribime tal como debiera aparecer en Q2 (como se vería en la hoja)

Sdos!

Sdos!

Muy buenas noches Elsa. Gusto en saludarte. 

Apliqué tu sugerencia y funciono, salvo que en la celda Q2 no se establece la formula.

En Q2 requiero que se reste el valor de la celda H menos el valor de la celda J menos el valor de la celda M y menos el valor de la celda P. Es algo como esto: =H2-J2-M2-P2

Actualmente la macro sugerida coloca la formula en la celda H. 

Muy agradecida Elsa por tu valiosa ayuda.

Te comenté que la parte de la fórmula quedó como la tenías porque no se comprendió.

Entonces si Q2 será = H2-J2-M2-P2, no hace falta hacer referencia a la celda activa sino que se las nombra directamente.

Cualquiera de estas 2 instrucciones te servirá:

[Q2].FormulaR1C1 = "=RC[-9]-RC[-7]-RC[-4]-RC[-1]"
[Q2].Formula = "=H2-J2-M2-P2"

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas