Adolfo, não tenho o excel 2013 para testar, mas esta função está presente nesta versão, no site abaixo temos a relação de várias funções, aplicação e a qual versão se aplica.
MS Excel: HLOOKUP Function (WS)
Applies To :
Excel 2013, Excel 2011 for Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000
http://www.techonthenet.com/excel/formulas/hlookup.php
MS Excel: ALL Functions - Category
http://www.techonthenet.com/excel/formulas/index.php
Quanto ao erro, a principio não tem nada a ver com compatibilidade de versão, a mensagem de erro está sinalizando algum elemento que não está dentro dos ranges, deixa ver se consigo exemplificar :
As duas rotinas abaixo, a principio são identicas, o diferencial é que a primeira irá retornar o Valor correto, e a segunda irá dar a mensagem de erro que citou, coloquei para pegar somente um valor para teste e poder exemplificar melhor e com os Ranges definidos nas mesmas :
Se utilizar estas rotina no exemplo que o Basole anexou :
Esta irá devolver no MsgBox : fornecedor3
Sub Teste_HLookup_OK()
Dim sLocalizou As String
With Worksheets("Plan1")
sLocalizou = WorksheetFunction.HLookup(.Range("$I$2").Value, .Range("$B$2:$G$22"), 21, False)
End With
MsgBox sLocalizou
End Sub
Esta irá dar o erro que citou.
Sub Teste_HLookup_Com_Erro()
Dim sLocalizou As String
With Worksheets("Plan1")
sLocalizou = WorksheetFunction.HLookup(.Range("$I$3").Value, .Range("$B$3:$G$23"), 21, False)
End With
MsgBox sLocalizou
End Sub
Agora observe a diferença nas duas, é devido aos Ranges a condição final:
Range("$I$3").Value, .Range("$B$3:$G$23"), 21
Então, como na rotina que enviei estamos utilizando algumas Variáveis fixas e outras Incrementadas, pode ser que se estiver utilizando em um outro modelo com colunas e linhas diferentes, teremos de ajustar estas variáveis:
As Variáveis que citei seriam :
i_Lin_Lookup = 21
............................................
sLocalizou = WorksheetFunction.HLookup(.Range("I" & iLin).Value, _
.Range("B" & iLin & ":G22"), i_Lin_Lookup, False)
Estas são Variáveis Fixas definidas diretamente na rotina, e não estão sendo incrementadas.
Espero ter conseguido explicar e ajudar, copie as rotinas acima, faça os testes e qualquer coisa retorne.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 02/08/2013 7:29 pm