Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por sauloslm
Posts
#65548
Boa noite,
Estou aprendendo a usar Array no VBA.

Fiz a seguinte Array com 6 elementos. Cada elemento é uma fórmula a ser aplicada dentro de um For:

Formula = Array( _
"=CONCATENATE([@PERIODO],[@[COD_PART]],[@[CNPJ FILIAL]])", _
"=IFERROR(INDEX(R_150,MATCH([@Combo],R_150[Combo],0),5),"")", _
"=IF(IFERROR(INDEX(R_150,MATCH([@Combo],R_150[Combo],0),7),"")="",IFERROR(INDEX(R_150,MATCH([@Combo],R_150[Combo],0),8),""),IFERROR(INDEX(R_150,MATCH([@Combo],R_150[Combo],0),7),""))", _
"=IFERROR(INDEX(R_150,MATCH([@Combo],R_150[Combo],0),10),"")", _
"=IFERROR(INDEX(_Mu,MATCH([@CODMUN],_Mu[Código UM],0),2),"")", _
"=IFERROR(INDEX(_Mu,MATCH([@CODMUN],_Mu[Código UM],0),3),"")" _
)


Fiz um For para buscar os elementos. A primeira fórmula é aplicada, mas a partir da segunda (2) dá esse erro:

For i = 1 to 6
Cells(1, i) = Formula(i).

Erro em tempo de execução '1004'. Erro definição de aplicativo ou de definição de objeto.

Alguém sabe o que pode ser?
Por osvaldomp
#65559
O código abaixo funciona aqui, mas com as suas fórmulas dá erro já na primeira.
Código: Selecionar todos
Sub teste()
 Dim arrFórmulas(), i As Long
  arrFórmulas = Array("=SUM(A5:B5)", "=SUM(A10:B10)", "=SUM(A15:B15)")
   For i = 0 To 2 'ou i= LBound(arrFórmulas) To UBound(arrFórmulas)
    Cells(1, i + 1) = arrFórmulas(i)
   Next i
End Sub
#
dica - habitue-se a declarar as variáveis; você utilizou o termo "Formula" como variável, não é recomendável utilizar termos reservados da linguagem VBA como variáveis (ex. para inserir uma fórmula em A1 ~~~> [A1].Formula = "=SUM(A1:B1)"
sauloslm agradeceu por isso
Por sauloslm
Posts
#65585
Osvaldo, muito obrigado pela dica.

Consegui resolver o problema das formulas.

Por exemplo:
Na primeira vez, eu fiz a formula na célula F4 planilha e achei na janela de verificação imediata:
? range("F4").Formula
=IFERROR(INDEX(Tabela1,MATCH([@Produto],Tabela1[Produto],0),2),"")

Quando eu usei o gravador de macro, gerou o seguinte:
"=IFERROR(INDEX(Tabela1,MATCH([@Produto],Tabela1[Produto],0),2),"""")"

Repare, que a mesma fórmula no gravador de macro em mais aspas.
osvaldomp agradeceu por isso
Por osvaldomp
#65589
sauloslm escreveu: 07 Jul 2021 às 17:22 Na primeira vez, eu fiz a formula na célula F4 planilha e achei na janela de verificação imediata:
Repare, que a mesma fórmula no gravador de macro em mais aspas.
A Janela Verificação Imediata apenas traduz a fórmula da versão local para a versão em Inglês, ela não prepara a fórmula para ser inserida na célula via macro.

Se a fórmula original (a que está na célula) contém aspas duplas então elas devem ser dobradas para que a fórmula seja inserida via macro.

Como não é o caso da sua primeira fórmula que apresentou erro aqui, então seria necessário ver a sua planilha para ajudar a identificar o erro. Mas, se você conseguiu inserir todas ... :)
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord