2013-03-21 329 views
0

这是我第一个vba任务。事实上,我第一次使用Alt + F11打开VB编辑器! 我需要做的是根据开始日期和天数计算结束日期。 我有列A中的开始日期和持续时间的值。 B列中的天数。 计算营业日是我目前的第二个关注点。我首先需要知道的是,我如何使用Worksheet_Change事件?根据开始日期和天数查找结束日期 - excel

我想要做的是,当用户在列A中的任何单元格中输入持续时间A(n)时,将在Worksheet_Change事件代码中选择单元格B(n)。当在B2中输入开始日期时,调用函数来计算结束日期。请让我知道,如果它是一个正确的做法或不。

此外,造成麻烦的原因是,在单元格中输入值之后按Enter键时,Worksheet事件突然出现。

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

回答

0

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

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 
+0

可以直接调用从Excel这个功能sheet.the方式调用像= CalculateEndDate(阿根廷,参数)一旦你已经在你的VBA代码中定义的任何职能。 – 2013-03-21 16:17:15

+0

谢谢!你可以让我知道,如果这是调用函数计算结束日期说** ** CalculateEndDate(byVal startDate as日期,byVal持续时间为整数)作为日期**在vba:endDate = CalculateEndDate(strtDt,持续时间)的正确方法。另外,当我以某种方式获得结束日期的值时,它显示为########。那么,我该如何格式化日期为dd-MMM-yyyy。 – chubhub 2013-03-21 16:20:34

+0

只需双击列的顶部角落,您将看到该值。增加列宽。 – 2013-03-21 16:22:02

相关问题