我尝试使用Hlookup。
代码返回以下错误:
"无法获取WorksheetFunction类的HLookup属性">
我尝试了错误处理,但我得到了:
运行时错误"13"类型不匹配。
我意识到这是因为数据类型冲突。如何以If myHLookupResult <> "" Then MsgBox myHLookupResult
可以处理长数据类型的方式来表达它。
Dim myHLookupResult As Long
On Error Resume Next
myHLookupResult = WorksheetFunction.HLookup(CalcSheet.Range("C81"), CalcSheet, 57)
On Error GoTo 0
If myHLookupResult <> "" Then MsgBox myHLookupResult
pmp.Offset(0, 14).Value = myHLookupResult
说明@BigBen的评论,并查看您的代码:
- 使用变体类型,以便处理返回的错误
- 使用变量设置查找变量和范围(不是必需的(
- 定义是否希望与查找函数中的最后一个参数完全匹配
旁注:您的查找范围设置为图纸名称(或至少显示(
阅读代码的注释并根据您的需要进行调整。
Public Sub HLookupResult()
' Not required, but nice to set the value to a variable
Dim lookupValue As Variant
lookupValue = CalcSheet.Range("C81").Value
' Not required, but nice to set the lookup range to a variable
Dim lookupRange As Range
Set lookupRange = CalcSheet.Range("A1:B5")
' Use variant so if not found can handle the error
Dim resultValue As Variant
resultValue = Application.HLookup(lookupValue, lookupRange, 2, False)
' Check the error and do something
If IsError(resultValue) Then
MsgBox "Not found"
Else
MsgBox resultValue
End If
End Sub
好吧,我意识到我不知道如何使用HLookup函数,需要它:
myHLookupResult = WorksheetFunction.HLookup(CalcSheet.Range("C81"), CalcSheet.Range("C57:CX58"), 2)
尽管我确信如果出现任何问题,错误检查会有所帮助。
谢谢。