excel - 尝试使用 Application Volatile 让单元格在每次更改时显示工作簿的名称,但不工作
问题描述
我正在尝试使用 application.volatile 使单元格在每次打开工作簿时显示工作簿的名称。
Function getbookname() As String
Application.Volatile
getbookname = ActiveWorkbook.Name
End Function
我在单元格 B7 中输入 =getbookname(),但结果好坏参半。如果我关闭工作簿,更改工作簿的名称并再次打开,有时它可以工作,有时它不会。有人可以帮忙吗?
解决方案
有许多网站解释了为什么要避免使用Volatile
,除非真的有必要。
在您的代码中,您正在使用ActiveWorkbook
,但是您对所需内容的描述意味着这ThisWorkbook
将更合适。
- 插入当前文件名、其完整路径和活动工作表的名称:
=CELL("filename")
- 仅插入当前文件名:
=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
如果你真的想使用 VBA,那么你可以在某处设置一个引用单元格与Workbook_Open
事件。如果您使用“命名范围”,这会更容易。对于参数,让我们将此工作簿范围的命名范围称为“书名”。然后,在您需要它的单元格中,您只需键入=bookname
Private Sub WorkBook_Open()
ThisWorkbook.Sheets("MyReferenceSheet").Range("bookname").Value = ThisWorkbook.Name
End Sub
对于这些选项中的每一个,“不稳定”以及这可能导致的所有问题都是不必要的。
推荐阅读
- javascript - 如何在 azure cosmos 数据库中创建/更新大量记录
- python - 作者频道名称
- python-3.x - 不兼容的形状:[128,37] 与 [128,34]
- kubernetes - 如何为命名空间中的 pod 提供管理员访问权限?
- python - django 服务器没有显示任何结果
- android - Android CardView:为什么角落不圆?
- asp.net - 包含重复数据的 ASP.NET 表和标识表
- android - 有没有办法在Android上拥有一个后台服务,它可以在准确的时间执行网络操作并且不会被Android杀死?
- python - Python中的非二进制文件
- c - 为什么 *y = z 将 y 绑定到内存地址,但 *y = *x 只取一个值?