如何自定义函数引用文件创建时间@张志晨之经验

2025-11-23 01:51:37

1、价值与问题分析:

  说真的,这个创意真的很好,一劳永逸。对于公司使用的、内容和格式都固定不变的报表而言,做成模板,是个很不错的选择。如果只是单个的文档就没有价值了。

  但这个公式有问题:

  一是不简明,用了嵌套的条件语句。可改为:=TEXT(IF( OR( J4<>0,H4<>0),TODAY(),""),"m月d日")

  二是使用的函数不对。TODAY()返回的是系统的当前,这个函数的优点就是在于“当前”,具有可变性。而这位朋友需要的是不变化的时间。那么怎么办?

2、改变思路:

  换个思路。思路决定出路!用自定义函数。只有文件的创建时间是不变的,所以调用这个时间就可以了。这能办到吗?只有想不到的,没有做不到的。

3、创建自定义函数:

在VBA(Module1块)中写代码:

Function cTime()


   Dim fso, f1
   Dim p As String, n As String, str As String
   
   p = ThisWorkbook.Path
   n = ThisWorkbook.Name
   
   If Right(p, 1) = "\" Then
       str = p & n
   Else
       str = p & "\" & n
   End If
   
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f1 = fso.GetFile(str)
   cTime = f1.DateCreated‘这句调用文件创建时间,并返回

End Function

如何自定义函数引用文件创建时间@张志晨之经验

4、保存成启用宏的模板:

把此文件“另存为”模板就可以了。

以后就可以基于这个模板创建新文档了。

按下图的程序操作。在图片中,我的示例是将模板保存在F:\sof文件夹中。

如何自定义函数引用文件创建时间@张志晨之经验

5、创建新文档:

我们基于这个模板创建一个新文档,保存在桌面,文件名:Test.xlsx

在A1中输入公式:

=TEXT(IF(OR(H4<>0, J4<>0),cTime(),""),"m月d日")

意思是,如果目标单元格有数字,且不为0,就显示文件创建时间。用Text函数确定显示方式:m月d日。文件创建时间由自定义函数cTime()返回。

如何自定义函数引用文件创建时间@张志晨之经验

6、回车可见效果:

如何自定义函数引用文件创建时间@张志晨之经验

7、补充:模板和新文档的样式

  此后,你无论什么时间打开基于这个模板创建的文档,这个最初的录入数据的时间不会随系统的时间而改变了。

如何自定义函数引用文件创建时间@张志晨之经验

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢