Notifications
Clear all

Erro 1004 - Propriedade FórmulaArray da classe Range

11 Posts
4 Usuários
0 Reactions
2,894 Visualizações
(@wil-iam)
Posts: 8
Active Member
Topic starter
 

Estou com um problema para inserir uma Fórmula matricial utilizando o VBA.

Quando eu executo o código aparece o seguinte erro:

Erro em tempo de execução '1004':
Não é possível definir a propriedade FormulaArray da classe Range.

A Fórmula é essa:
=SOMA(('[Controle de peças VW.xlsm]BD Geral - ND'!$B$3:$B$10000>=$A$5)*('[Controle de peças VW.xlsm]BD Geral - ND'!$B$3:$B$10000<=$A$16)*('[Controle de peças VW.xlsm]BD Geral - ND'!$E$3:$E$10000=$M5)*('[Controle de peças VW.xlsm]BD Geral - ND'!$A$3:$A$10000=O$4)*('[Controle de peças VW.xlsm]BD Geral - ND'!$AD$3:$AD$10000))

E o código que está dando erro é este:
Range("O5").Select
Selection.FormulaArray = _
"=SUM(('[Controle de peças VW.xlsm]BD Geral - ND'!R3C2:R10000C2>=R5C1)*('[Controle de peças VW.xlsm]BD Geral - ND'!R3C2:R10000C2<=R16C1)*('[Controle de peças VW.xlsm]BD Geral - ND'!R3C5:R10000C5=RC13)*('[Controle de peças VW.xlsm]BD Geral - ND'!R3C1:R10000C1=R4C)*('[Controle de peças VW.xlsm]BD Geral - ND'!R3C30:R10000C30))"

 
Postado : 10/08/2017 11:44 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde,

Anexe uma planilha de exemplo, assim fica mais fácil ajudar.

att,

 
Postado : 11/08/2017 11:49 am
(@wil-iam)
Posts: 8
Active Member
Topic starter
 

Boa tarde Bruno,

Montei dois exemplos simulando a utilização das duas planilhas que estão na fórmula.

Ficou uma simulação exata do erro que ocorre.

Á Fórmula e o código estão no arquivo "Pasta 3"

 
Postado : 14/08/2017 12:27 pm
(@alminen)
Posts: 77
Trusted Member
 

O problema está que a propriedade FormulaArray só suporta até 255 caracteres (sua fórmula tem 326).
Sugiro definir as partes mais longas (especificamente: '[Controle de peças VW.xlsm]BD Geral - ND') como uma String, no início do código.
Desse jeito, você vai economizar caracteres (a soma de todos eles dá 210 nesse caso) e conseguir colocar sua fórmula.

 
Postado : 14/08/2017 7:37 pm
(@osvaldomp)
Posts: 858
Prominent Member
 
Sub ExemploV2()
 Range("E5").Select 
Selection.Value = _
  "=SUM(('[Controle de peças VW.xlsm]Plan1'!R3C1:R10000C1>=R5C1)*('[Controle de peças VW.xlsm]Plan1'!R3C1:R10000C1<=R16C1)*('[Controle de peças VW.xlsm]Plan1'!R3C3:R10000C3=RC3)*('[Controle de peças VW.xlsm]Plan1'!R3C2:R10000C2=R4C)*('[Controle de peças VW.xlsm]Plan1'!R3C4:R10000C4))"
  SendKeys "{F2}^+~"
End Sub

Osvaldo

 
Postado : 15/08/2017 6:04 am
(@wil-iam)
Posts: 8
Active Member
Topic starter
 

Alminen

Muito obrigado pela dica, acredito que seja a solução, porém está dando um pequeno probleminha ainda.

Se eu coloco a Declaração "CV" sem concatenar o código sempre pede para eu buscar o caminho do arquivo (Sub Exemplo1())

Sub Exemplo1()

Dim CV As String
    
    CV = "('G:CGAQCQAS1 - ANÁLISE TÉCNICACLIENTESCONTROLE DE PEÇAS POR CLIENTE[Controle de peças VW.xlsm] BD Geral - ND')"
    
    Range("O5").Select
    Selection.FormulaArray = _
        "=SUM((CV!R3C2:R9000C2>=R5C1)*(CV!R3C2:R9000C2<=R16C1)*(CV!R3C5:R9000C5=RC13)*(CV!R3C1:R9000C1=R4C)*(CV!R3C30:R9000C30))"

Se eu concateno ele continua a aparecer o erro Sub Exemplo 2())

Sub Formulacerta()

Dim CV As String
    
    CV = "('G:CGAQCQAS1 - ANÁLISE TÉCNICACLIENTESCONTROLE DE PEÇAS POR CLIENTE[Controle de peças VW.xlsm] BD Geral - ND')"
    
    Range("O5").Select
    Selection.FormulaArray = _
        "=SUM((" & CV & "!R3C2:R9000C2>=R5C1)*(" & CV & "!R3C2:R9000C2<=R16C1)*(" & CV & "!R3C5:R9000C5=RC13)*(" & CV & "!R3C1:R9000C1=R4C)*(" & CV & "!R3C30:R9000C30))"
 
Postado : 15/08/2017 7:47 am
(@wil-iam)
Posts: 8
Active Member
Topic starter
 
Sub ExemploV2()
 Range("E5").Select 
Selection.Value = _
  "=SUM(('[Controle de peças VW.xlsm]Plan1'!R3C1:R10000C1>=R5C1)*('[Controle de peças VW.xlsm]Plan1'!R3C1:R10000C1<=R16C1)*('[Controle de peças VW.xlsm]Plan1'!R3C3:R10000C3=RC3)*('[Controle de peças VW.xlsm]Plan1'!R3C2:R10000C2=R4C)*('[Controle de peças VW.xlsm]Plan1'!R3C4:R10000C4))"
  SendKeys "{F2}^+~"
End Sub

Só um detalhe, a fórmula não fica como uma matricial.

Se não fosse esse detalhe seria a solução perfeita.

 
Postado : 15/08/2017 8:00 am
(@osvaldomp)
Posts: 858
Prominent Member
 

Só um detalhe, a fórmula não fica como uma matricial.

Sim, insere a fórmula como matricial.

Veja o arquivo anexado (é cópia do seu), está com o código que passei.

Osvaldo

 
Postado : 15/08/2017 8:17 am
(@wil-iam)
Posts: 8
Active Member
Topic starter
 

Só um detalhe, a fórmula não fica como uma matricial.

Sim, insere a fórmula como matricial.

Veja o arquivo anexado (é cópia do seu), está com o código que passei.

Perfeito,

Só uma dúvida, porque quando eu executo dentro do visual basic utilizando F8 não fica como matricial, e utilizando o play dá um erro?

Tem alguma configuração que preciso fazer no meu excel?

 
Postado : 15/08/2017 8:35 am
(@osvaldomp)
Posts: 858
Prominent Member
 

Só uma dúvida, porque quando eu executo dentro do visual basic utilizando F8 não fica como matricial, e utilizando o play dá um erro?

Ao executar a partir do editor de VBA o comando SendKeys não é aplicado na célula, como deve ser, e sim no editor, por isso o erro.

Osvaldo

 
Postado : 15/08/2017 8:52 am
(@wil-iam)
Posts: 8
Active Member
Topic starter
 

Entendi.

Muito obrigado pela ajuda

Osvaldomp

 
Postado : 15/08/2017 9:15 am