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 todosSub 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 todosPrivate 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.