我正在尝试创建一个公共函数,该函数在不同的工作簿中查找用户提供的数字并从中提取信息。用户将给出一个计划编号(实际上是一个带有编号的字符串),该函数将在另一个工作簿中查找该编号,以收集文件编号和与计划编号相关的交叉。现在我有这个功能在立即窗口中调用它时工作,但它将返回#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
答案 0 :(得分:3)
您的代码无法作为直接从工作表调用的函数。 VBA UDF受限于他们可以做什么。