首页 > 解决方案 > 仅通过输入日期 (jj) 填写日期 (jj/mm/yyyy)

问题描述

我有 12 个月的 12 张纸,每个月的随机日期要手动输入 A 列。我们以 1 月份为例:

当我在单元格 A1 中输入数字25时,我希望单元格在 A1 中自动返回25/01/2019(!)(或 2019 年 1 月 25 日,如您所愿)。据我所知,即使使用自定义设置,Excel 自动填充功能也无法做到这一点,所以我猜:VBA?

我认为代码应该是这样的(带有更改事件):

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range, cell As Range
    Set rng = Range("A:A")
    If Not Application.Intersect(rng, Range(Target.Address)) _
           Is Nothing Then

           '???
           'If cell entered in range is a number Then
           'change value to "number" & "/01/2019" 

    End If
End Sub

这就是我所在的地方。我很确定这对于使用月份并输入许多日期的人来说可能是一段有用的代码。我离真相还远吗?它甚至可以吗?我知道这可能比听起来更复杂。

标签: excelvbaautofillreal-time-updates

解决方案


尝试

If Target.value2 > 0 and Target.value2 <= 31 Then
   Target.Value2 = dateSerial(year(now), month(now), Target.Value2)
End If

推荐阅读