当其他用户尝试使用它时,VBAfunction错误

我做了这个简短的函数来查找一个名字是“给定姓氏”还是“姓氏,给定名字”,但是当这个由另一个用户(在另一台PC上)运行时,结果函数在错误#NAME? :

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 

这就是函数的调用方式: 这就是函数的调用方式:

这是公式:

 ="Hello "&FindName_Function(INDEX(Table_HP_Effective_contact_list;MATCH(SiteID;Table_HP_Effective_contact_list[Site];0);4))&"," 

我相信你使用这个函数作为一个UDF(用户定义的函数),#NAME错误表示该函数不能被发现或执行。 确保将UDF存储在可发现的位置,并有权运行。 从你的问题中不清楚你在哪里存储UDF以及客户端机器上的安全设置。

我所做的是创build一个新的工作簿,在工作簿中添加一个新模块,将UDF复制到模块中,在新工作簿中的单元格中使用,并且没有任何问题。 所以我从有限的信息中得到的猜测是,您将UDF存储在工作簿之外的其他位置,其他用户找不到。

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

如果您想要更好的答案,请详细说明UDF的位置(您在哪里创build/存储UDF)以及当前在您看到错误的机器上安装的macros安全设置是什么。

在这里输入图像说明

在这里输入图像说明

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

  2. 如果你将这个函数保存在同一个工作簿中,并将工作簿保存为* .xlsx格式,那么你将它保存为错误的格式。

  3. 如果您将该function保存在其他工作簿中,则应将该工作簿保存为Excel加载项格式(* .xlam),并且该加载项必须在Excel中加载。

希望这可以帮助


+

尝试使用插入function窗口来查找function。 select类别=“用户定义”。

  1. 如果function列出,然后尝试从那里调用它。
  2. 如果函数没有列出,那么肯定没有启用该工作簿的macros。

在这里输入图像说明