首页 > 解决方案 > 计算自用户输入日期以来经过了多少天

问题描述

我试图让用户在单元格中输入日期。使用输入日期和今天的日期,我将计算自用户输入日期以来已经过去了多少天。

示例:用户在单元格 (C4) 中输入“2/15/2019” - 第二天显示“1 天/秒”,依此类推。

我已经搜索并尝试了很多东西但都失败了,无论如何我都不是 excel 或 VBA 专家,所以我什至不确定这是否可能。

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next   
    If Not Intersect(Target, Range("L:L")) Is Nothing Then
        With ActiveWorkbook.Worksheets("Ended")
            Application.EnableEvents = False
            Target = "Today()" - Target
            Application.EnableEvents = True
        End With
    End If

这个问题可以通过这个公式解决,但是我不能使用 VBA 将它应用于用户输入日期。

=TODAY()-DATEVALUE("15/2/2020")

标签: excelvba

解决方案


我还没有足够的声誉来发表评论,所以我会尝试根据你所说的来回答。

你在写轨道上,只需要让它使用 Target.Formula 输入一个公式。

我经常为在 Excel 公式中使用日期而苦恼。最简单的方法是使用日期的数值。您可以通过使用 CLng() 将日期转换为 Long 来做到这一点。

完整的鳕鱼读取线

Target.Formula = "=Today() - " & CLng(Target)

正如其他人也提到的那样,您将在用户输入日期后将一个数字写回到一个具有日期格式的单元格中。例如,如果我在单元格中输入 01/02/2020(dd/mm/yyyy 是我的本地日期格式),它会将 Target 设置为等于 16/02/2020 - 01/02/2020,即 15 天,但是除非您将单元格的格式更改为数字,否则单元格将具有 15/01/1900(计算机日期从 01/01/1900 开始)。您可以使用

Target.NumberFormat = "0"

推荐阅读