我已经做了这个简短的功能,以确定名称是否为"名字姓氏"或者"姓氏,名称和#34;但是当这是由另一个用户(在另一台PC上)运行时,结果函数错误#NAME? :
"o Brother"
这是公式:
Function FindName_Function(NameCell As String) As String
Dim FindComma As Long
Dim FindName As String
FindComma = InStr(1, NameCell, ",")
If FindComma <> 0 Then
FindName = VBA.Right(NameCell, Len(NameCell) - FindComma)
Else
FindName = VBA.Left(NameCell, InStr(1, NameCell, " ") - 1)
End If
FindName_Function = FindName
End Function
答案 0 :(得分:1)
我相信您将该函数用作UDF(用户定义函数),而#NAME错误表示无法找到或执行该函数。确保将UDF存储在可发现的位置并具有运行权限。从您的问题中不清楚 - 您存储了UDF以及客户端计算机上的安全设置。
我所做的是创建一个新的工作簿,向工作簿添加一个新模块,在模块中复制UDF,在新工作簿的单元格中使用它,并且没有问题。因此,根据提供的有限信息,我猜测您将UDF存储在工作簿之外的其他位置,其他用户无法访问该位置。
旁注: - VBA。不一定需要前缀 - 测试名称是否为空,如果名称为空,则InStr将失败
如果您想要更好的答案,请详细说明UDF的位置(您在哪里创建/存储UDF)以及在您看到错误的计算机上当前有哪些宏安全设置。
答案 1 :(得分:1)