其他用户尝试使用它时VBA功能错误

时间:2016-01-28 11:34:20

标签: excel vba function excel-vba

我已经做了这个简短的功能,以确定名称是否为"名字姓氏"或者"姓氏,名称和#34;但是当这是由另一个用户(在另一台PC上)运行时,结果函数错误#NAME? :

"o Brother"

这是函数的调用方式: This is how the function is called:

这是公式:

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

2 个答案:

答案 0 :(得分:1)

我相信您将该函数用作UDF(用户定义函数),而#NAME错误表示无法找到或执行该函数。确保将UDF存储在可发现的位置并具有运行权限。从您的问题中不清楚 - 您存储了UDF以及客户端计算机上的安全设置。

我所做的是创建一个新的工作簿,向工作簿添加一个新模块,在模块中复制UDF,在新工作簿的单元格中使用它,并且没有问题。因此,根据提供的有限信息,我猜测您将UDF存储在工作簿之外的其他位置,其他用户无法访问该位置。

旁注:   - VBA。不一定需要前缀   - 测试名称是否为空,如果名称为空,则InStr将失败

如果您想要更好的答案,请详细说明UDF的位置(您在哪里创建/存储UDF)以及在您看到错误的计算机上当前有哪些宏安全设置。

enter image description here

enter image description here

答案 1 :(得分:1)

  1. 如果您将该函数保存在同一工作簿中并以* .xlsm格式保存工作簿,则可能的原因是用户在打开文件时未启用宏。

  2. 如果您将该函数保存在同一工作簿中并以* .xlsx格式保存工作簿,则以错误的格式保存它。

  3. 如果您将该函数保存在另一个工作簿中,则该工作簿应以Excel加载项格式(* .xlam)保存,并且必须在Excel中加载该加载项。

  4. 希望这会有所帮助

    +

    尝试使用插入功能窗口查找功能。选择category =“User Defined”。

    1. 如果列出了该功能,请尝试从那里调用它。
    2. 如果未列出该功能,则表示该工作簿的宏未启用。
    3. enter image description here