Brian想通过只输入月份和日期来输入日期。

Excel假定年份为当前年份,但他希望将该日期作为下一次该日期出现的年份。例如,如果今天是18年6月1日,而布莱恩(Brian)输入7/1,则Excel将自动假定年份为2018年。如果布莱恩(Brian)在同一天键入5/1,则Excel应将2019年假定为5/1。已经过去了。 Brian知道他可以使用公式在不同的单元格中显示日期,但想知道如何在将日期键入单元格时如何使Excel默认使用此方法。

该解决方案缺少播放系统日期或在输入后对日期进行一些编辑的缺点,因此需要使用宏。以下事件处理程序可以解决问题:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 Then Exit Sub     If Target = "" Then Exit Sub

If IsDate(Target) Then         If Target < Date Then             If Year(Target) = Year(Date) Then                 Application.EnableEvents = False                     Target.Value = DateAdd("yyyy", 1, Target)

Application.EnableEvents = True             End If         End If     End If End Sub

为了将该宏添加到您的工作簿中,只需右键单击要在其上运行的工作表的选项卡,然后选择“查看代码”。在出现的代码窗口中,添加上面的宏。

现在,无论何时您在工作表中进行更改,都将检查它是否为日期。如果是这样,并且日期早于今天的日期,则将一年添加到该日期。请注意,代码会检查以确保输入日期的年份与当前年份相同。没有此检查,过去的任何日期(甚至是过去多年的日期)都将增加。这可能不是故意的,因此包含了检查。

该宏不会影响一次输入到多个单元格中的日期,也不会影响以文本值输入的日期。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本提示(13601)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。