VBA开发求助:按日期命名8位文件夹时拼接单元格丢失前导零问题
解决VBA中生成8位日期格式文件夹名的问题
这个问题其实不用绕弯子依赖单元格公式,直接在你写的VBA代码里处理日期格式会更高效,也能彻底避免前导零丢失的问题。
直接用VBA生成目标格式字符串
VBA里的Format函数专门用来处理格式转换,针对你需要的8位日期格式(比如10/01/2017对应01102017,如果是你例子里的12012017则是MMDDYYYY格式,调整格式字符串即可),可以这么写:
' 生成DDMMYYYY格式(2位日+2位月+4位年),比如10月1日2017就是01102017 Dim dailyFolderName As String dailyFolderName = Format(Date, "DDMMYYYY") ' 如果需要的是MMDDYYYY格式(2位月+2位日+4位年),就改成下面的格式字符串 ' dailyFolderName = Format(Date, "MMDDYYYY") ' 接下来用这个变量创建文件夹,替换成你的目标路径 MkDir "C:\Your\Target\Folder\Path\" & dailyFolderName
为什么之前的单元格方法会丢前导零?
你之前用DAY()、MONTH()函数得到的结果是数值类型,哪怕你设置了单元格显示前导零,单元格的实际值还是不带前导零的数字(比如1就是1,只是显示成01)。当你用&拼接的时候,Excel会按数值来处理这些单元格内容,前导零自然就被忽略了。
如果非要用单元格公式的话,也可以用TEXT()函数把每个日期部分转成带前导零的文本:
=TEXT(DAY(TODAY()),"00")&TEXT(MONTH(TODAY()),"00")&YEAR(TODAY())
这样拼接出来的是纯文本,前导零就不会丢失了。
不过还是推荐用VBA的Format函数,毕竟你本来就在写VBA代码,直接在代码里处理不用依赖单元格,流程更顺畅。
内容的提问来源于stack exchange,提问作者Mr.Riply
相关产品推荐
相关产品推荐

