Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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
根据开始日期和天数查找结束业务日期-excel_Excel_Vba - Fatal编程技术网

根据开始日期和天数查找结束业务日期-excel

根据开始日期和天数查找结束业务日期-excel,excel,vba,Excel,Vba,这是我的第一个vba任务。事实上我第一次用Alt+F11打开VB编辑器! 我需要做的是,根据开始日期和天数计算结束日期。 我在A列中有开始日期和持续时间的值,即:。;B列中的天数。 到目前为止,计算工作日是我关注的第二个问题。我首先需要知道的是,如何使用工作表\更改事件 我想做的是,当用户在A列的任何单元格中输入持续时间(比如A(n))时,在工作表\u更改事件代码中选择单元格B(n)。在B2中输入开始日期时,调用计算结束日期的函数。请让我知道这是否是正确的方法 给我带来麻烦的还有,当我在单元格中

这是我的第一个vba任务。事实上我第一次用Alt+F11打开VB编辑器! 我需要做的是,根据开始日期和天数计算结束日期。 我在A列中有开始日期和持续时间的值,即:。;B列中的天数。 到目前为止,计算工作日是我关注的第二个问题。我首先需要知道的是,如何使用工作表\更改事件

我想做的是,当用户在A列的任何单元格中输入持续时间(比如A(n))时,在工作表\u更改事件代码中选择单元格B(n)。在B2中输入开始日期时,调用计算结束日期的函数。请让我知道这是否是正确的方法

给我带来麻烦的还有,当我在单元格中输入值后按Enter键时,工作表事件的行为会突然发生


请帮我解决这个简单而复杂的问题

试试下面的代码。请确保您将此代码放入工作表中。此代码也适用于整列

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Application.EnableEvents = False

    If Target.Column < 2 And Target.Count < 1 And Target.Value = "" Then Exit Sub

    If Target.Column = 1 And Target.Offset(0, 1) <> "" Then
        Target.Offset(0, 2) = DateAdd("d", CDbl(Target.Value), CDbl(Target.Offset(0, 1)))
    ElseIf Target.Offset(0, -1) <> "" Then
        Target.Offset(0, 1) = DateAdd("d", CDbl(Target.Offset(0, -1)), CDbl(Target.Value))
    End If


    Application.EnableEvents = True
End Sub
Private子工作表\u更改(ByVal目标作为范围)
出错时继续下一步
Application.EnableEvents=False
如果Target.Column<2且Target.Count<1且Target.Value=”,则退出Sub
如果Target.Column=1且Target.Offset(0,1)“,则
Target.Offset(0,2)=DateAdd(“d”、CDbl(Target.Value)、CDbl(Target.Offset(0,1)))
ElseIf目标。偏移量(0,-1)”,然后
Target.Offset(0,1)=DateAdd(“d”,CDbl(Target.Offset(0,-1)),CDbl(Target.Value))
如果结束
Application.EnableEvents=True
端接头

您可以直接从excel工作表中调用此函数。在vba代码中定义函数后,您调用任何函数的方式,如=CalculateEndDate(arg,args)。谢谢!您还可以让我知道,在vba中调用函数计算结束日期(比如CalculateEndDate,byVal startDate为日期,byVal duration为整数)为日期是否正确:endDate=CalculateEndDate(strtDt,duration)。另外,当我以某种方式获得结束日期的值时,它显示为######。那么,如何将日期格式化为dd-MMM-yyyy。只需双击列的上角,您就会看到值。增加列宽。这里的链接将有助于你一步一步地走。好的!谢谢希望在这一切之后,我能尽快通过解决方案!