Página 1 de 1

Index e Match no VBA

Enviado: 23 Fev 2016 às 23:12
por IsraelEfraim
Olá galera, bom dia/tarde/noite.

Primeiramente gostaria de agradecer por estar dedicando seu tempo para ajudar pessoas com problemas no Excel/vba.

Seguinte, meu problema é na realidade bem banal pra alguns de vocês. Estou tentando fazer uma "procv" para dois critérios, nesse caso, seria o "produto" e o "sabor". Utilizo o Index e o Match para poder realizar a busca onde o valor coincida com o produto e o sabor que a pessoa digitou.

Imagem

O código que fiz foi este:
Private Sub CommandButton1_Click()
Dim produto As String
Dim Sabor As String

produto = TextBox1.Text
Sabor = TextBox2.Text

TextBox3 = "R$" & Application.WorksheetFunction.Index(Range("C2:C5"), _
Application.WorksheetFunction.Match(produto, Range("A2:A5"), 0), _
Application.WorksheetFunction.Match(Sabor, Range("B2:B5"), 0))
End Sub
Imagem

Infelizmente, quando você tenta procurar por um produto que não seja o primeiro da lista ele retorna um erro (1004) alertando que não foi possível obter a propriedade Index. Através de pesquisas descobri que a função Match no VBA só lhe retorna o primeiro valor, se não for o mesmo, ele dará erro. Entretudo, pelo que entendi o Match usado como Application.Match retorna o primeiro valor, mas não estou usando esse em questão, e sim uma função da planilha, porém não tenho certeza se difere.

Imagem

Muito obrigado por dedicar seu tempo ao meu tópico, se puder me ajudar, agradeço. :D

Re: Index e Match no VBA

Enviado: 24 Fev 2016 às 09:57
por alexandrevba
Bom dia!!

Caso a resposta não seja corrigido, dando a solução do seu post por outro colaborado, poste seu arquivo modelo.

Att

Index e Match no VBA

Enviado: 24 Fev 2016 às 18:07
por IsraelEfraim
É claro.

Re: Index e Match no VBA

Enviado: 25 Fev 2016 às 10:40
por Reinaldo
Uma possibilidade
Código: Selecionar todos
Private Sub CommandButton1_Click()
Dim Produto As String
Dim Sabor As String
Dim x As Integer
x = 2
Produto = TextBox1.Text
Sabor = TextBox2.Text
Do While Cells(x, 1) <> ""
    If Cells(x, 1) = Produto And Cells(x, 2) = Sabor Then TextBox3.Text = Format(Cells(x, 3).Value, "R$ * #,##0.00")
    x = x + 1
Loop
If TextBox3.Text = "" Then MsgBox "Produto não encontrado"
End Sub