Notifications
Clear all

Criando uma variável com a função VLookup?

16 Posts
2 Usuários
0 Reactions
2,489 Visualizações
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Amigos, lendo artigos de diversos fóruns, descobri essa função VLookup que seria o equivalente do PROCV em Excel.
Tentei criar uma váriavel baseada nessa função mais sem sucesso.
Alguém poderia me ajudar?

Segue o código usado:

Dim teste As Integer
teste = Application.WorksheetFunction.VLookup(CDbl(ComboBox13), Plan4.Range("Q2:S15"), 3, 0)
MsgBox("O valor da variável é " & teste)

Vejam que ele vai basear sua busca no valor que estiver contido na Combobox13.
Ele dá o erro "Tipos incompátiveis"...

Não consigo enxergar oq está de errado.
Tentei fazer dezenas de alterações, mais sem sucesso.

 
Postado : 05/04/2013 1:55 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

VLookup é o nome em ingles do nosso Procv ; portanto e a mesma "coisa"
Quanto ao erro de 'tipos .." Que tipo de valor vc tem em q2

 
Postado : 05/04/2013 2:12 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Também lembre se de usar a pesquisa do fórum!!!
search.php?keywords=Vlookup+vba&terms=all&author=&sv=0&sc=1&sf=all&sr=posts&sk=t&sd=d&st=0&ch=300&t=0&submit=Pesquisar

Att

 
Postado : 05/04/2013 5:40 pm
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Então Reinaldo, em Q2 tenho um texto.
Pra ser mais específico, Q2:S15 faz parte te uma tabela dinâmica lá na planilha.
Será que isso tem alguma coisa á ver?

Será que o VLookup não consegue trabalhar com tabelas dinâmicas?

 
Postado : 06/04/2013 4:57 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Já tentou a função GETPIVOTDATA ????

http://msdn.microsoft.com/en-us/library ... =office.11).aspx

Att

 
Postado : 06/04/2013 5:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eu não testei procv em TD, mas como o erro reportado e tipo incompativel, ao utilizar CDbl(ComboBox13) voce está convertendo (ou tentando) a variavel para numero, se for text dá incompativel mesmo.

 
Postado : 06/04/2013 5:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O Alexandre tem razão. PROCV() combinado com INFODADOSTABELADINÂMICA() deve resolver seu problema.

Se não avançar, poste a planilha para darmos uma olhada mais a fundo.

Abs,

 
Postado : 06/04/2013 7:31 pm
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Desculpe amigos, durante todos esse dias, fiz várias pesquisas e não consegui solucionar...
Essa função INFODADOSTABELADINÂMICA não seria uma função exclusiva do Excel?
Não consegui aplicar ela no VB...

Alguém poderia me dar algum exemplo de como aplicar ela no VB?
Pois realmente, só encontrei exemplos dessa função em Excel e nada em VB.

Desde já agradeço a ajuda!

 
Postado : 09/04/2013 8:19 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fica mais simples vc disponibilizar um exemplo do que deseja / pretende , do que ficarmos supondo.
Todas as funções / nomes no VBA são em ingles então deve procurar pelo correspondente de INFODADOSTABELADINÂMICA (creio que é o mencionado pelo AlexandreVBA acima)

 
Postado : 09/04/2013 8:47 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Certo.
Segue em anexo o arquivo.

Pra ficar de mais fácil a localização do que estou tentando fazer:
No Form "cadastro" existe uma combobox (13) que é referente ao campo Nome Administradora.
Ao clicar nele e selecionar qual será a administradora do cliente, ele deverá buscar lá na Plan4(Ferramentas) qual é a tabela dessa adminsitradora e salvar essa informação na variável "teste" e na mesma hora, jogar uma MsgBox perguntando se deseja cadastrar esse cliente com a mesma tabela da sua administradora.
Caso positivo, ele vai preencher o campo Tabela (Combobox14) com essa informação.

Se os amigos puderem dar uma olhada, agradeço demais!

 
Postado : 09/04/2013 11:31 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Faltou o anexo ???

 
Postado : 09/04/2013 11:59 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

kkkkkkkkkkkkkkk
Desculpe!
Tinha enviado o arquivo mais ele tinha mais que 500kb.
Alterei ele aqui e agora vai!

 
Postado : 09/04/2013 1:12 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não sei se entendi, então veja se atende:

Private Sub ComboBox13_Change()

Dim teste As String
If ComboBox13.Value = "" Then Exit Sub
teste = Application.WorksheetFunction.VLookup(ComboBox13, Plan4.Range("Q2:S15"), 3, 0)

If MsgBox("A tabela e a forma de pagamento desse cliente serão conforme os da sua Administradora? " & teste, vbYesNo + vbQuestion, "Pergunta") = vbYes Then
Me.ComboBox14.Value = teste
End If
End Sub
 
Postado : 09/04/2013 1:28 pm
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Cara, na mosca Reinaldo!
Meu caro, só pra questão de conhecimento mesmo: Reparei que você retirou a inscrição "CDbl" ali do meio da função e isso foi o que matou a charada e fez a bagaça funcionar.
O que significa esse tal de "CDbl"?
Eu só coloquei ele na código pois achei uns dois exemplos em fóruns que continham esse CDbl e achei que ele fosse fundamental para o funcionamento da função

O amigo sabe me dizer?

Cara, muito obrigado mesmo!
Essa realmente, até agora, foi a coisa que mais me fez quebrar a cabeça aqui no projeto!
Se não fosse a boa vontade dos amigos em ajudar... seria complicado...

Forte abraço meus caros!

 
Postado : 10/04/2013 12:27 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Na realidade não foi apenas o Cdbl , mas tambem na declaração de variavel
CDbl e uma função de conversão de dados - Basicamente: Tenta converter um valor String para numeral tipo longo; no editor do vba, posicione o cursor sobre o "texto" CDbl e tecle F1, deverá abrir o help com maiores informações sobre essa e outras funções de conversão de dados.
Se comparar verá que alterei tambem da declaração da variavel Teste >
Estava :
Dim teste As Integer - variavel declarada como numerica, tipo inteiro - não aceita valores tipo String, gerando erro ,
Está:
Dim teste As String - Variavel tipo String, aceita valores texto.

 
Postado : 10/04/2013 12:35 pm
Página 1 / 2