此函数完全按预期工作,但如果我将'Rank'替换为'Merc(98)'作为参数,则会收到错误消息Compile error: Expected: )
。我做错了什么?
UDF to lookup DMs on Skills_Tables_DMs table
Function RankDMs(WhichTable, Rank)
RankDMs = WorksheetFunction.HLookup(WhichTable, (Range("Skills_Tables_DMs")), (Rank + 1), False)
End Function
答案 0 :(得分:1)
如果以下内容没有帮助,那么您将需要更详细地解释您尝试做什么或(更好)包含更多相关代码。
Sub Tester()
'...
Dim rv
'...
rv = RankDMs(someValueHere, 5)
'or
rv = RankDMs(someValueHere, Merc(98))
'...
End Sub
Function RankDMs(WhichTable, Rank)
RankDMs = WorksheetFunction.HLookup(WhichTable, _
Range("Skills_Tables_DMs"), (Rank + 1), False)
End Function
注意我改变了这个:
(Range("Skills_Tables_DMs"))
为:
Range("Skills_Tables_DMs")
虽然在这种情况下它并不是真正重要(因为任何一种形式都可以使用),你应该注意两者不相等:在第一种情况下,额外的括号会导致对范围的值,产生Variant数组,但第二个产生Range
个对象。您可以通过比较这两个来在VB编辑器的立即窗格中看到这一点:
? typeName((Range("A1:A5"))) ' >> Variant()
? typeName(Range("A1:A5")) ' >> Range