Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 尝试使用Application Volatile使单元格在每次更改工作簿时显示其名称,但不起作用_Excel_Vba - Fatal编程技术网

Excel 尝试使用Application Volatile使单元格在每次更改工作簿时显示其名称,但不起作用

Excel 尝试使用Application Volatile使单元格在每次更改工作簿时显示其名称,但不起作用,excel,vba,Excel,Vba,我正在尝试使用application.volatile使单元格能够在每次打开工作簿时显示工作簿的名称 函数getbookname()作为字符串 应用程序。挥发性 getbookname=ActiveWorkbook.Name 端函数 我将=getbookname()输入到单元格B7中,但结果是混合的。如果我关闭工作簿,更改工作簿的名称,然后再次打开,有时工作,有时不工作。有人能帮上忙吗?有很多网站解释了为什么要避免使用Volatile,除非真的需要 在代码中,您使用的是ActiveWorkbo

我正在尝试使用application.volatile使单元格能够在每次打开工作簿时显示工作簿的名称

函数getbookname()作为字符串 应用程序。挥发性 getbookname=ActiveWorkbook.Name 端函数
我将=getbookname()输入到单元格B7中,但结果是混合的。如果我关闭工作簿,更改工作簿的名称,然后再次打开,有时工作,有时不工作。有人能帮上忙吗?

有很多网站解释了为什么要避免使用
Volatile
,除非真的需要

在代码中,您使用的是
ActiveWorkbook
,但您对所需内容的描述意味着
thishworkbook
更合适

您不需要VBA。发件人:

  • 插入当前文件名、其完整路径和文件名 活动工作表:
    =单元格(“文件名”)
  • 仅插入当前文件名:
    =MID(单元格(“文件名”)、搜索(“[”、单元格(“文件名”))+1,
    搜索(“]”,单元格(“文件名”)-SEARCH(“[”,单元格(“文件名”)-1)
如果您真的想使用VBA,那么您可以使用
工作簿_Open
事件在某处设置一个引用单元格。如果您使用“命名范围”,这将更容易。对于参数,让我们将此工作簿范围的命名范围称为“bookname”。然后,在需要它的单元格中,您只需键入
=bookname

Private Sub WorkBook_Open()
    ThisWorkbook.Sheets("MyReferenceSheet").Range("bookname").Value = ThisWorkbook.Name
End Sub

对于每个选项,“Volatile”这可能导致的所有问题都是不必要的。

计算是否设置为自动?如果设置为手动,即使使用volatile也不会更新。还有哪个版本的excel?64或32位?它设置为自动,并且是32位。即使计算设置为自动,也不会更新。谢谢,这非常有用。使用excel版本虽然在名称更改后打开工作簿后,我需要在文件名更新之前执行某种操作,但sion更稳定。我将尝试找到另一种解决方法。确定-听起来像是一个新问题,而不是试图重复这个问题(尽管您可以链接到它以了解更多上下文).如果答案有帮助,请随意接受。