Notifications
Clear all

Procurar um número com função Index + Match no VBA

4 Posts
3 Usuários
0 Reactions
1,235 Visualizações
(@mcrossaxe)
Posts: 2
New Member
Topic starter
 

Olá, sou novo no fórum, não sei se estou postando no lugar correto, mas vamos lá:

Estou criando uma planilha de cadastro, nela contém um formulário que irá pegar e editar valores de uma matriz baseado na linha correspondente, logo vem o bom e velho PROCV em mente, bem como o meu preferido ÍNDICE + CORRESP.

Bom, até aí tudo bem, até precisar fazer o mesmo em VBA para puxar os dados para o Form.

Pesquisando um pouco vi que dá pra usar a "Application.WorksheetFunction" para chamar as mesmas FUNÇÕES (em inglês) usadas nas planilhas. Fiz uns códigos usando INDEX + MATCH e não foi, achei estranho e pesquisei por exemplos na internet para estudar o código. Adaptei para a minha planilha e descobri que por alguma razão muito bizarra a função em VBA não funciona somente com números...

Minha ideia era puxar os dados a partir da coluna A (ID) para prevenir um nome igual, mas o dado só é puxado se tiver pelo menos uma letra além dos números... restando pra fazer pela coluna de nomes...

Vou deixar uma planilha de exemplo em anexo para terem uma ideia, mudem algum nome em CADASTROS para um número e chamem o form pelo botão em FICHAS.

Alguém tem ideia do que pode tá errado? Ou alguma sugestão de como fazer?
Nem testei o VLOOKUP, achando que poderia dar no mesmo.

Agradeço desde já

 
Postado : 16/07/2018 6:11 pm
(@klarc28)
Posts: 971
Prominent Member
 

https://www.youtube.com/results?search_query=vba+busca

 
Postado : 16/07/2018 6:48 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente conforme abaixo:

Private Sub pesquisar_Click()
Dim Prc As Variant
If IsNumeric(Me.id.Text) Then
    Prc = CDbl(Me.id.Text)
Else
    Prc = Me.id.Text
End If
With Application.WorksheetFunction
Me.nome.Text = .Index(Range("s_nome2"), .Match(Prc, Range("s_id2"), 0), 0)
End With
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/07/2018 4:19 am
(@mcrossaxe)
Posts: 2
New Member
Topic starter
 

Já tava um tempo vendo uns vídeos, @klarc28, acho que uma maioria usa Offset pra fazer isso, gostei da solução do Index + Match pois já estava mais familiarizado com o mesmo, mas valeu a ajuda mesmo assim!

Converter resolveu, @Reinaldo! Não tinha pensado nisso :lol:
E o With deixou o código mais enxuto também, valeu!

 
Postado : 17/07/2018 6:33 pm