是否可以在VBA创建的用户定义或自定义函数中使用excel内置函数?
我试图通过VBA在excel中创建一个函数,不知道excel内置函数是否可以在该函数中使用。例如,Lookup或Match等函数。我有使用VBA和formula的解决方案,但我想知道函数是否也可以这样做 我试图创建一个函数,其中VLookup应该只返回第一个找到的项的值是否可以在VBA创建的用户定义或自定义函数中使用excel内置函数?,excel,vba,Excel,Vba,我试图通过VBA在excel中创建一个函数,不知道excel内置函数是否可以在该函数中使用。例如,Lookup或Match等函数。我有使用VBA和formula的解决方案,但我想知道函数是否也可以这样做 我试图创建一个函数,其中VLookup应该只返回第一个找到的项的值 'function which can return the Vlookup value only for 1st found value Function SLOOKUP(Pvalue As Range, Rng As Ran
'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
下面是一个使用MAX()和SUM()的示例: 请注意,并非所有内置工作表函数都可以在VBA中这样使用。以下是可用的:
答案是“是”,但有一些警告/限制(例如,通常不允许UDF改变环境)。如果您希望更具体,您可能应该包括您正在尝试做的事情,以及您尝试编写或使用的代码。我已经添加了代码。让我知道你的想法?有什么问题吗?是否有错误?是的,它不返回任何值。当我通过temporary sub测试它时,错误点是Application.Match函数,其中运行时错误438“对象不支持此属性或方法。现在代码正常,代码正确。工作表。函数错误。它必须是worksheetfunction。谢谢,我如何才能获得无法使用的功能的详细信息?感谢共享链接。如果我使用Match和Vlookup,我的代码就无法工作。@user3200076工作表函数中应该没有点
Public Function whatever(rin As Range) As Variant
Dim mx As Variant
mx = Application.WorksheetFunction.Max(rin)
whatever = Application.WorksheetFunction.Sum(rin) / mx
End Function