Error 104 en macro

El código de la macro es el siguiente: "error 104 No se puede cambiar parte de una matriz"
La macro es la siguiente:
Range("I7").Select
    Selection.FormulaArray = _
        "=IFERROR(INDEX(ENTXDEV[Artículo],MATCH(KGLOBAL[[#This Row],[Cadena]],IF(ENTXDEV[Pieza]=KGLOBAL[[#This Row],[Pieza]],ENTXDEV[Cadena]),0)),"""")"
    Range("J7").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS(ENTXDEV[Metros],ENTXDEV[Cadena],KGLOBAL[[#This Row],[Cadena]],ENTXDEV[Pieza],KGLOBAL[[#This Row],[Pieza]])"
    Range("L7").Select
    Selection.FormulaArray = _
        "=IFERROR(INDEX(SALXREM[Artículo],MATCH(KGLOBAL[[#This Row],[Cadena]],IF(SALXREM[Pieza]=KGLOBAL[[#This Row],[Pieza]],SALXREM[Cadena]),0)),"""")"
    Range("M7").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS(SALXREM[Metros],SALXREM[Cadena],KGLOBAL[[#This Row],[Cadena]],SALXREM[Pieza],KGLOBAL[[#This Row],[Pieza]])"
    Range("N7").Select
    Selection.FormulaArray = _
        "=IFERROR(INDEX(SALEMB[Artículo],MATCH(KGLOBAL[[#This Row],[Cadena]],IF(SALEMB[Pieza]=KGLOBAL[[#This Row],[Pieza]],SALEMB[Cadena]),0)),"""")"
    Range("O7").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS(SALEMB[Metros],SALEMB[Cadena],KGLOBAL[[#This Row],[Cadena]],SALEMB[Pieza],KGLOBAL[[#This Row],[Pieza]])"
    Range("P7").Select
    Selection.FormulaArray = _
        "=IFERROR(INDEX(SALVTAS[Artículo],MATCH(KGLOBAL[[#This Row],[Cadena]],IF(SALVTAS[Pieza]=KGLOBAL[[#This Row],[Pieza]],SALVTAS[Cadena]),0)),"""")"
    Range("Q7").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS(SALVTAS[Metros],SALVTAS[Cadena],KGLOBAL[[#This Row],[Cadena]],SALVTAS[Pieza],KGLOBAL[[#This Row],[Pieza]])"
    Range("T7").Select
    Selection.FormulaArray = _
        "=IFERROR(INDEX(INVFINAL[PROCESO KX TULANCINGO],MATCH(KGLOBAL[[#This Row],[Cadena]],IF(INVFINAL[Pieza]=KGLOBAL[[#This Row],[Pieza]],INVFINAL[Cadena]),0)),"""")"
    Range("U7").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS(INVFINAL[Metros],INVFINAL[Cadena],KGLOBAL[[#This Row],[Cadena]],INVFINAL[Pieza],KGLOBAL[[#This Row],[Pieza]])"
    Range("I7:U7").Select
    Selection.Copy
    Range("KGLOBAL[[Artículo2]:[Metros6]]").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Calculate
    Range("KGLOBAL[[Artículo2]:[Metros6]]").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("S6").Select
    End Sub
Al depurar me señala las líneas que marco con negritas y subrayadas
No tengo muchos conocimientos al respecto, sin embargo entiendo que lo que estoy haciendo mal es querer copiar las fórmulas de la primera fila de la tabla(excel 2007), y posteriormente pegar la fórmulas hacia abajo de toda la columna hacia abajo. En otra macro lo ejecuta sin problemas pero supongo que es porque no icluyo una fórmula matricial. Seguramente tu sabrás como evitar el error o formularlo de forma más efectiva.

1 Respuesta

Respuesta
1
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
Probemos así.
Gracias.
Con este cambio sigue marcando el mismo error
Probé agregando al principio:
Range("KGLOBAL[[Artículo2]:[Metros6]]").Select
Selection.ClearContents
Con esto ya funciona la macro; sin embargo lo procesa en 1 Hora aproximadamente.
Esto seguramente es por las fórmulas matriciales. ¿Habrá alguna forma de ocupar alguna función que no sea matricial como buscarv por ejemplo. Lo qué busco es obtener un dato de una columna (es texto), si encuentra referencia de 2 columnas, es decir si cumple la condición de cadena (primera columna) y pieza (segunda columna) me de el artículo (tercera columna); o bien cambiar la macro con un código diferente? Ojalá exista alguna forma. Nuevamente gracias por tu tiempo.
Tuve que concatenar en cada hoja 2 columnas para referenciar una sola y lo mismo en la tabla que busca dicha referencia; con esto ya se tarda un promedio de 10 min en procesarlo (hablamos de más de 50,000 registros). De cualquier modo te agradezco la pronta respuesta inicial y te comento que tus respuestas a otras consultas de los demás me han sido de gran utilidad para adaptarlas a mis necesidades de trabajo. Aprovecho para agradecértelo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas