Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
使用len()函数获取access VBA中日期的长度_Vba_Ms Access - Fatal编程技术网

使用len()函数获取access VBA中日期的长度

使用len()函数获取access VBA中日期的长度,vba,ms-access,Vba,Ms Access,我正在编写一个函数,它接受一个日期并将其转换为一个字符串,以便我可以使用该字符串保存导出文件。因此,2019年10月12日变为12102019 我遇到了一个问题,我相信我可能没有正确使用len()函数 我想确保一位数的月份和天数,即2019年1月1日显示为01012019 我创建了一个循环,用一整年的时间来测试我的功能 dim x as date if len(x) = 8 then debug.print x elseif len(x) = 9 then debug.pr

我正在编写一个函数,它接受一个日期并将其转换为一个字符串,以便我可以使用该字符串保存导出文件。因此,2019年10月12日变为12102019

我遇到了一个问题,我相信我可能没有正确使用len()函数

我想确保一位数的月份和天数,即2019年1月1日显示为01012019

我创建了一个循环,用一整年的时间来测试我的功能

dim x as date

if len(x) = 8 then
     debug.print x
elseif len(x) = 9 then
     debug.print x
end if
想象这是一个循环

当len(x)=8时,没有问题。我知道日期是2019年1月1日 当len(x)=9时,即2019年1月10日,它将不处理elseif

我是否正确使用len()函数?还有什么我应该用的吗

谢谢

VBA中的土拨鼠将给出日期的长度。在VBA中,许多数据类型实际上都存储为双重类型。这就是为什么您看不到日期的字符串长度,而是
值中位数的长度加倍的原因

您可以在excel中对此进行测试,日期如下:

2019年1月1日
2019年10月1日

当格式化为数字(5位数长度)时:

43466
43739


要解决此问题,您可以按照@braX&Ken的建议,使用
格式$(x,“yyyyymmdd”)
,您可以用引号括起来,从长度中减去2,或者将日期转换为VBA中的字符串。

省去麻烦,只需将日期格式化为字符串-
格式$(x,“mmddyyyy”)
-那么长度总是相同的,并且已经是您需要的格式。更好的是,省去您将来的一些麻烦,将导出文件的格式更改为
yyyymmdd
,这样您就可以使用
dir
或Explorer对其进行正确排序。如果您不确定原因,请在文件夹中创建一些示例文本文件,如
01012019.txt
02012018.txt
,以及不同月份和年份的不同日期,然后尝试按时间顺序列出它们。谢谢,我将使用格式化方法。我没想过,但很感谢你的帮助