excel - 在单元格公式中从当前工作簿执行 VBA 函数得到错误 #name(法语版为 #nom)
问题描述
当我将 VBA 函数用于单元格的公式时,我遇到了一个可能非常简单的问题,我得到单元格内容“#NAME”(未找到函数?而使用该函数(用于测试)的宏正常执行(显示单元格的所需内容,函数的返回值,该函数从完整路径中提取文件名)。
语境 :
我是由过去(12年前)开发的,可能是5万,VBA指令,使用office2003。今天又要用Office365开发一些宏。所以自从这次以来我已经忘记了很多,并且一些功能可能已经改变,这可能会变得欺骗(我需要再次阅读我的旧软件以回忆我所有的知识,但我现在无法访问)
问题
- 当我使用创建到与当前工作簿关联的 VBA 中的函数时,我收到错误“#name”。没有解释,没有帮助,我试图在几个小时内找到一些东西,但我什么也没找到。
- 我也为测试(见代码)开发了一个调用函数的“子”,他的执行是成功的,但是......
- 我无法从任何单元格的公式中运行该函数。
- 我已经测试了宏的安全参数并暂时完全解锁了执行,并将本地目录声明为置信区域。
注意:此代码作为示例进行了详细说明
编码
Public Function FNameOf(CellPointed As Range)
Dim CurCell As Range
Dim Text1 As String
Dim Text2 As String
Set CurCell = CellPointed
Text1 = CurCell.Value
Text2 = Mid$(Text1, InStrRev(Text1, "\") + 1, Len(Text1))
FNameOf = Text2
End Function
Sub DispFileName2()
Dim style, disp, titre
Dim Cursel As Range
'Cursel = ActiveCell
disp = FNameOf(ActiveCell)
style = vbOKOnly
titre = "Nom du fichier extrait du texte (fullpath) de la cellule courante"
MsgBox disp, style, titre
End Sub
如果我提交宏 DispFileName2 如果获取带有从路径中提取的文件名的消息,该路径是当前单元格的内容
如果我设置单元格的公式:
=FNameOf(AnotherCell) 'which contains a fullpath to a file
我总是收到错误“#NOM”(法语版),或者我认为是“#NAME”(英文版),好像函数名(ref)在工作簿中未知(未达到代码,a在第一条指令上设置停止)
可能是什么原因?
解决方案
请将您的用户定义函数放置在模块中的某个位置(既不在“ThisWorkbook”中,也不在单个工作表的代码中,例如“Feuil1”)。
您还应该添加结果声明As String
。
我知道这个例子仅供参考,但你可以缩短它:
Public Function FNameOf(CellPointed As Range) As String
FNameOf = Mid(CellPointed.Value, InStrRev(CellPointed.Value, "\") + 1)
End Function
推荐阅读
- python - jinja2:重载模板如何加载所有变量
- javascript - 反应组件的计时器/计数器 - 使用 setInterval() 增加后值保持为 0
- java - XSL 样式表不保留编码值
- asp.net-mvc - 为什么我的 Web API 在发布到 Web API 时收到空值?不只为一个客户工作
- c++ - 我正在使用基于 arm 的拱门将数据发送到基于 x86 的拱门。在发送或接收数据之前,我是否必须编写代码来更改字节顺序?
- javascript - JS Bcrypt 到 c#
- mapbox - SnapChat 的 MapBox Snap 地图城市边界更新
- javascript - 没有这样的文件或目录 react-native/scripts/libraries
- php - 出现草稿类别的产品
- javascript - 反应钩子 setState 和 useContext 不起作用