Página 1 de 1

Criando um combo de Validação de Dados via Macro VBA

Enviado: 26 Jan 2017 às 08:48
por cyllio
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!

Re: Criando um combo de Validação de Dados via Macro VBA

Enviado: 27 Jan 2017 às 04:28
por DJunqueira
Foi um problema de língua.

Re: Criando um combo de Validação de Dados via Macro VBA

Enviado: 30 Jan 2017 às 09:18
por cyllio
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!