【发布时间】:2017-04-07 19:12:25
【问题描述】:
我正在尝试通过 VBA 在 excel 中创建一个函数,并想知道是否可以在该函数中使用 excel 内置函数。例如,像 Lookup 或 Match 这样的函数。我有 VBA 和公式的解决方案,但有兴趣知道函数是否可以做同样的事情。
我正在尝试创建一个函数,其中 VLookup 应该只返回第一个找到的项目的值。
'function which can return the Vlookup value only for 1st found value
Function SLOOKUP(Pvalue As Range, Rng As Range, Rng1 As Range, pIndex As Long)
Dim Cvalue As Variant
Dim Mvalue As Long
Dim Uvalue As Long
Dim Result As Variant
Result = ""
Cvalue = Pvalue.Value
Mvalue = Application.Worksheet.Function.Match(Cvalue, Rng, -1)
Uvalue = Pvalue.Row
If Mvalue = Uvalue Then
Result = Application.Worksheet.Function.VLookup(Cvalue, Rng1, pIndex, 0)
Else
Result = 0
End If
SLOOKUP = Result
End Function
【问题讨论】:
-
答案是“是”,但有一些警告/限制(即,值得注意的是,UDF 通常不允许改变环境)。如果您想要更具体的内容,您可能应该包括您正在尝试做的事情,以及您尝试编写或使用的代码。
-
我已经添加了代码。在这里让我知道你的想法?
-
似乎是什么问题?有错误吗?
-
是的,它不返回任何值。当我通过临时子测试它时,错误点是 Application.Match 函数,其中运行时错误 438“对象不支持此属性或方法
-
现在代码可以工作了,代码是正确的。 Worksheet.Function 错误。它必须是工作表函数。