Excel VBA中Date变量转换为mm/dd/yyyy格式字符串的问题
VBA内置的
Date变量可以获取当前日期(撰写该内容时输出为8/25/21),但我需要将日期转换为mm/dd/yyyy格式并存储到变量myDate中,暂时没有找到简便的字符串处理方案。
我曾尝试将Date变量写入Excel工作表单元格,再通过以下代码修改数字格式:[A1]=Date [A1].NumberFormat="mm/dd/yyyy" myDate=[A1].value debug.print myDate虽然这段数字格式代码会修改单元格[A1]的显示效果,让它看起来是符合要求的
mm/dd/yyyy格式,但debug.print输出的仍然是8/25/21,而非08/25/2021。
解决方案
直接调用VBA内置的Format函数即可一步实现需求,完全不需要操作单元格中转:
' 如果要固定格式存储,直接存为字符串类型即可 Dim myDate As String myDate = Format(Date, "mm/dd/yyyy") Debug.Print myDate ' 会直接输出 08/25/2021 格式的结果
原方案失效原因
你修改的只是单元格的显示格式,本质上单元格存储的还是日期类型的数值,用Value读取后赋值给变量时,如果变量没有声明为字符串类型,拿到的还是原生日期值,VBA在默认打印、转字符串时会调用系统默认的短日期格式输出,所以还是会显示8/25/21的短格式。
如果后续需要保留日期类型用于计算,只需要在输出/转字符串的环节套一层Format即可:
Dim myDate As Date myDate = Date ' 保留日期类型方便后续做日期计算 ' 需要显示的时候再转指定格式 Debug.Print Format(myDate, "mm/dd/yyyy")
内容的提问来源于stack exchange,提问作者JackeyOL
相关产品推荐
相关产品推荐

