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.
  • Avatar do usuário
  • Avatar do usuário
#19431
Olá amigos,
Estou criando uma daquelas listas combobox via VBA mas embora a fórmula esteja correta o Excel insiste em dizer que não e rejeita a criação. Será que quando isso é feito por VBA muda alguma coisa na sintaxe da fórmula?
O texto da minha macro é:

Sub Macro1()
'Quando a fórmula INDIRETO é inserida manualmente na caixa de diálogo "Validação de Dados"
'o Excel aceita a fórmula, mas quando isso é feito por VBA é rejeitado.
'Mesmo tendo sido gravado pelo próprio gravador de Macros é rejeitado.

With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIRETO($B$3)"
'Pergunta: que ajuste precisa ser feito nessa fórmula para que o Excel aceite a criação via VBA?
End With
End Sub

Se vc copiar e colar apenas a fórmula =INDIRETO($B$3) manualmente para a tela de validação verá q o Excel aceita.
Então, o que eu preciso mudar no código para que eu consiga criar através do VBA?
O arquivo de exemplo está anexado.
A célula vermelha tem que ficar como a célula amarela, sendo q a amarela foi criada manualmente e o código VBA serve para criar a célula vermelha.
Me ajudem por favor!
Você não está autorizado a ver ou baixar esse anexo.
#19576
Djunqueira,
Obrigado. Eu havia tentado em inglês para a sentença inteira e como deu erro tb, achei q não seria isso, mas agora depois de sua msg não tenho dúvidas de q realmente esse era o caminho certo.
Peguei então minha fórmula completa: =DESLOC(ÍNDICE($A:$D;CORRESP($L$2&$L$3&$L$4;$A:$A&$B:$B&$C:$C;0);4);0;0;CONT.SES($A:$A;$L$2;$B:$B;$L$3;$C:$C;$L$4);1) e converti em inglês (nomes das fórmulas e troquei ";" por "," conforme abaixo:
=OFFSET(INDEX($A:$D,MATCH($L$2&$L$3&$L$4,$A:$A&$B:$B&$C:$C,0),4),0,0,COUNTIFS($A:$A,$L$2,$B:$B,$L$3,$C:$C,$L$4),1)

Na hora de testar a macro vi que o Excel (eu uso o 2010 no trabalho) na verdade às vezes gera erros pq parece demorar a resolver a fórmula. Isso é ruim pois faz a gente pensar q está errada enquanto em outro momento a mesma funciona sem alterações.
Eu tenho algumas planilhas q usam a dica dada aqui mesmo sobre validação de dados (criando tabelas auxiliares e intervalos) mas nesta especificamente estou tentando fazer apenas por fórmulas.
Anexei o arquivo com a solução caso alguém queira dar uma olhada.

Muito obrigado pela ajuda!
Você não está autorizado a ver ou baixar esse anexo.
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