1

为了简化数据输入,我允许用户输入日期为“ddmmyyyy”,不带“/”,例如“12032017”。输入后,我想用值“dd/mm/yyyy”更新目标单元格,例如“12/03/2017”。
开始时,目标单元格的格式设置为“常规”,但一旦计算出日期值,单元格的格式就会自动更改为“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
4

1 回答 1

1

您仍然返回一个看起来像日期而不是实际日期的字符串,使用 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
于 2017-07-11T15:06:56.480 回答