将字符串值转换为 vba 中的日期值

Convert a string value to a date value in vba

为了简化数据输入,我允许用户输入不带“/”的 "ddmmyyyy" 日期,例如“12032017”。输入后我想用值 "dd/mm/yyyy" 更新目标单元格,例如“12/03/2017”。
开始时,目标单元格的格式设置为 "General",但一旦计算出日期值,单元格的格式就会自动更改为 "dd/m/yyyy"。 我尝试同时使用常规格式和日期格式。下面是VBA代码

    If Not Intersect(Target, Range("D11:D510")) Is Nothing Then
    If Not (Target.Value = "") Then
    Application.EnableEvents = False   ' very important
    Target.Value = Left(Target.Value, 2) & "/" & Mid(Target.Value, 3, 2) & 
    "/" & Right(Target.Value, 4)
    Application.EnableEvents = True   'very important
    End If
    End If

您仍然返回一个看起来像日期而不是实际日期的字符串,使用 DateSerial:

If Not Intersect(Target, Range("D11:D510")) Is Nothing Then
    Target.NumberFormat = "@"
    If Not (Target.Value = "") Then
        Application.EnableEvents = False   ' very important
        Target.Value = DateSerial(Right(Target.Value, 4), Mid(Target.Value, 3, 2), Left(Target.Value, 2))
        Target.NumberFormat = "dd/mm/yyyy"
        Application.EnableEvents = True   'very important
    End If
End If