Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
今天减去的VBA';从另一列中的日期中选择日期并返回数字_Vba_Excel_Date_Subtraction - Fatal编程技术网

今天减去的VBA';从另一列中的日期中选择日期并返回数字

今天减去的VBA';从另一列中的日期中选择日期并返回数字,vba,excel,date,subtraction,Vba,Excel,Date,Subtraction,我希望你能帮忙。下面我有一小段代码。我遇到的问题是,我试图从C列中的日期中减去今天的日期(参见图1),然后在D列中返回一个数字结果,然后在D列中继续此公式,直到C列中没有可减去的值 所以今天的日期是2017年3月9日,我想从2017年7月3日C2的日期中减去这个日期,在D2中给我2,然后通过D列继续,直到C有一个空白单元格 被窃听的代码段是Range(“D2”)。公式=DateDiff(C2,Date,“d”) 我得到的错误是运行时错误13类型不匹配 它所属的较大代码段是 Public Sub

我希望你能帮忙。下面我有一小段代码。我遇到的问题是,我试图从C列中的日期中减去今天的日期(参见图1),然后在D列中返回一个数字结果,然后在D列中继续此公式,直到C列中没有可减去的值

所以今天的日期是2017年3月9日,我想从2017年7月3日C2的日期中减去这个日期,在D2中给我2,然后通过D列继续,直到C有一个空白单元格

被窃听的代码段是
Range(“D2”)。公式=DateDiff(C2,Date,“d”)

我得到的错误是运行时错误13类型不匹配

它所属的较大代码段是

Public Sub Activate_Sheet()



Worksheets("In Progress").Activate
Columns.AutoFit
Range("N:N").EntireColumn.Delete
Range("D1").Value = "# days open"
Range("D2").Formula = DateDiff(C2, Date, "d")

End Sub
一如既往,我们非常感谢您的帮助

图1


DateDiff
功能参数:

  • 在您的案例“d”(代表天数)中,间隔是第一个参数,而不是第三个参数
不能在
DateDiff
函数中使用
C2
,但需要使用
Range(“C2”).value从该单元格中获取值

另外,
DateDiff
将以天为单位返回一个数字结果,因此您需要在
范围(“D2”)中输入它。值
而不是
公式

将代码修改为:

Range("D2").Value = DateDiff("d", Range("C2").Value , Date)
编辑1:要对C列中所有占用的单元格运行此代码:

Dim LastRow  As Long, i As Long
With Worksheets("In Progress")
    LastRow = .Cells(.Rows.Count, "C").End(xlUp).Row

    For i = 2 To LastRow
        .Range("D" & i).Value = DateDiff("d", .Range("C" & i).Value, Date)
    Next i
End With
而不是

Range("D2").Formula = DateDiff(C2, Date, "d")
使用


.Formula
必须是写入单元格的公式(对于英文Excel版本)。如果您有非英语(本地化)Excel版本,则可以使用
.FormulaLocal
以本地化语言编写公式。

请注意。此公式将不断更新,因此如果明天打开该文件,值(天数)将不同。如果您希望保留相同的值,请使用Shai Rado提供的答案。@国王您完全正确,两个答案的结果不相同。这是我的初衷,因为D列名为
#days open
,他试图使用
.formula
,所以我高度假设他希望该列显示从今天起问题开放的天数。请注意。这些值(天数)将基于您执行此宏的日期。如果您希望这些值(天数)表示当前日期,则无论何时打开文件,请向参与此答案的所有人使用answer by Peh.Hi,并感谢所有人的帮助。非常感谢。我选择了
Range(“D2”)。Value=DateDiff(“d”,Range(“C2”)。Value,Date)
,因为我需要该值在当天保持静态。谢谢Shai Rado。我现在可以问一下,我怎样才能让它一直计算到D列?有人能提供建议吗?Shai Rado。非常感谢你的帮助,这是一件漂亮的工作。来自都柏林的尊敬。我希望你有一个伟大的一天。:-)非常感谢。
Range("D2").Formula = "=DAYS(TODAY(),C7)"