功能在即时窗口中工作,但不在工作表中?

时间:2017-11-29 22:07:47

标签: excel vba excel-vba

我正在尝试创建一个公共函数,该函数在不同的工作簿中查找用户提供的数字并从中提取信息。用户将给出一个计划编号(实际上是一个带有编号的字符串),该函数将在另一个工作簿中查找该编号,以收集文件编号和与计划编号相关的交叉。现在我有这个功能在立即窗口中调用它时工作,但它将返回#VALUE!在工作表中调用时。这就是我所拥有的。

Public Function indexfind(Plan As String) As String
    Dim wks As Worksheet
    Dim d As Range
    Dim filenumber As String
    Dim crossing As String
    Dim Plannumber As Double
    Plannumber = Val(Left(Plan, 4))

    Workbooks.Open ("File Path")
    Workbooks("PLANINDE.xls").Worksheets("Index").Activate
    Set wks = Workbooks("PLANINDE.xls").Worksheets("Index")
    Set d = wks.Range("G:G").Find(Plannumber, , xlValues)

    If d Is Nothing Then
        indexfind = "Plan Does Not Exist"
        Workbooks("PLANINDE.xls").Close (False)
    Exit Function
    End If

    filenumber = wks.Cells(d.Row, 2).Value
    crossing = wks.Cells(d.Row, 3).Value

    Workbooks("PLANINDE.xls").Close (False)

    Debug.Print filenumber
    Debug.Print crossing
    Debug.Print Plannumber

    indexfind = "No Plan Folder. File Number:" & filenumber & " crossing:" & crossing
End Function

1 个答案:

答案 0 :(得分:3)

您的代码无法作为直接从工作表调用的函数。 VBA UDF受限于他们可以做什么。

https://support.microsoft.com/en-us/help/170787/description-of-limitations-of-custom-functions-in-excel