Página 1 de 1

Vlookup em VBA

Enviado: 07 Abr 2016 às 08:48
por Tomze
Alguém pode me informarcomo resolvo o seguinte problema:

Em um formulário digito uma data em uma Textbox, e com a data digitada quero procurar a mesma em outra planilha que contem uma matriz indexada por data na primeira coluna e que me retornará o conteúdo da segunda coluna.
Isto eu sempre fiz com o PROCV, porém em VBA não está funcionando conforme código abaixo:

Private Sub CmdGrava_Click()
'Cria as variaveis
Dim indice As Characters
Dim dataindice As Date
Dim retorno


datacalc = DateValue(TextDataInicio.Value)
retorno = 0
datacarencia = DateSerial(Year(datacalc), Month(datacalc) + (carencia - 1), Day(datacalc))
indice = "INDICES.xlsx"


retorno = WorksheetFunction.VLookup(contador, Sheets(indice).Range("A3:B16"), 2, False)

Re: Vlookup em VBA

Enviado: 07 Abr 2016 às 09:07
por Startec
Voce quer procurar a data em outra Pasta_de_trabalho?

Re: Vlookup em VBA

Enviado: 07 Abr 2016 às 09:48
por Reinaldo
Pelo trecho do codigo não é possivel identificar as variaveis.
O que vem a ser Contador?
Por que "Indices.xlx"?
Algumas considerações:
Utilise a variavel indice como String ao inves de Characters
Para calculo datacarencia pode tambem utilizar DateAdd ==>datacarencia = VBA.DateAdd("m", -1, datacalc)

Poste seu modelo assim ficara mais simples erapido obter uma resposta

Vlookup em VBA

Enviado: 07 Abr 2016 às 10:03
por Tomze
Bom dia,

Reinaldo antes de mais nada, obrigado.

indice = "INDICES.xlsx" ==> É a planilha onde se encontra a matriz que busco o valor de um índice da data procurada.


retorno = WorksheetFunction.VLookup(datacarencia, Sheets(indice).Range("A3:B16"), 2, False) ==> Desculpe mas a variável estava errada, a correta é datacarencia que contem a data que vou pesquisar.


Reinaldo, no excel eu trabalho muito com procv para pesquisar valores de índices econômicos para determinados meses e funciona perfeitamente, mas quando tento fazer o mesmo via código VBA, dá erro.

Será que pode me orientar como resolver este problema.

Re: Vlookup em VBA

Enviado: 07 Abr 2016 às 10:23
por Tomze
Startec escreveu:Voce quer procurar a data em outra Pasta_de_trabalho?
Sim, estou tentando acessar esta planilha em outra pasta, o que faço normalmente com PROCV, mas em VBA não estou conseguindo acessar a matriz da referida planilha com a data procurada.

At.

Re: Vlookup em VBA

Enviado: 07 Abr 2016 às 16:08
por Tomze
Reinaldo antes de mais nada, obrigado.

indice = "INDICES.xlsx" ==> É a planilha onde se encontra a matriz que busco o valor de um índice da data procurada.


retorno = WorksheetFunction.VLookup(datacarencia, Sheets(indice).Range("A3:B16"), 2, False) ==> Desculpe mas a variável estava errada, a correta é datacarencia que contem a data que vou pesquisar.


Reinaldo, no excel eu trabalho muito com procv para pesquisar valores de índices econômicos para determinados meses e funciona perfeitamente, mas quando tento fazer o mesmo via código VBA, dá erro.

Será que pode me orientar como resolver este problema.

Vlookup em VBA

Enviado: 07 Abr 2016 às 18:13
por AndersonLeal
Utilize Application antes da função, assim:

Application.WorksheetFunction.Vlookup(datacarencia etc)

E tem mais:

INDICES.xlsx NÃO É UMA PLANILHA, é uma pasta de trabalho.

Vlookup em VBA

Enviado: 08 Abr 2016 às 09:52
por Reinaldo
Estou sem office no momento, então seria algo +/- assim:
Código: Selecionar todos
Sub CmdGrava_Click()
'Cria as variaveis
Dim indice As string 'Altere de Character para string
Dim dataindice As Date
Dim retorno
datacalc = DateValue(TextDataInicio.Value)
retorno = 0
datacarencia = DateSerial(Year(datacalc), Month(datacalc) + (carencia - 1), Day(datacalc))

indice = "INDICES.xlsx"

retorno = WorksheetFunction.VLookup( DataCarencia, WorkBook(indice).Sheets("Plan1").Range("A3:B16"), 2, False) 

End Sub

Vlookup em VBA

Enviado: 12 Abr 2016 às 08:13
por Tomze
Bom dia,

Reinaldo, segue em anexo a planilha com código, o qual não estou conseguindo resultado esperado.

Por gentileza se poder dar uma olhada e me dizer o que está errado eu lhe agradeço.

At.

Re: Vlookup em VBA

Enviado: 12 Abr 2016 às 10:21
por FelipeGualberto
@Tomze,
Utilize Option Explicit em todos seus componentes (http://ambienteoffice.com.br/blog/varia ... n-explicit)
---
Código: Selecionar todos
Private Sub ComButt_PegIndice_Click()
    Dim MatchRow As Long
    Dim SearchValue As Long
    Dim wsData As Worksheet
    
    TextBox_Índice.Text = ""
    
    If Not IsDate(TextBox_Data.Text) Then
        MsgBox "Digite uma data válida.", vbExclamation
        TextBox_Data.SetFocus
        GoTo Quit
    End If
    SearchValue = CLng(CDate(TextBox_Data.Text))
    
    Set wsData = ThisWorkbook.Worksheets("Plan2")
    
    On Error Resume Next
    MatchRow = WorksheetFunction.Match(SearchValue, wsData.Columns("A"), 0)
    On Error GoTo 0
    
    If MatchRow = 0 Then
        MsgBox "Data não encontrada!", vbExclamation
        GoTo Quit
    End If
    
    TextBox_Índice.Text = wsData.Cells(MatchRow, "B").Value
Quit:
End Sub

Vlookup em VBA

Enviado: 12 Abr 2016 às 15:13
por Tomze
Prezado Felipe,

Muito obrigado, funcionou.

Gostaria de abusar mais um pouco e perguntar como ficaria o código no caso de pegar os dados em uma planilha externa que está em outra pasta da rede.

Se for possível lhe agradeço.

At.