2017-10-10 78 views
1

我有两个日期选择器内容控件标题为dateofbirth和另一个标题datefirstseen。我试图确定年的差被计算成形式标题ageasatlastbirthday的-相同的第一页上的文本框内容控制两个日期选择器内容控制字之间的日期差异2016控制字vba代码

我试图此代码

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean) 
Dim CCtrl As ContentControl, DtStart As Long, DtEnd As Long 
With ContentControl 
    If .Title = "DateofBirth" Then 
    If IsDate(.Range.Text) Then 
     DtStart = CDate(.Range.Text) 
     With ActiveDocument.SelectContentControlsByTitle("DateRecruitedDateFirstSeen ")(1) 
     If IsDate(.Range.Text) Then DtEnd = CDate(.Range.Text) 
     ActiveDocument.SelectContentControlsByTitle("Ageatlastbirthday ")(1).Range.Text = Int((DtEnd - DtStart)/365) 
     End With 
    End If 
    End If 
    If .Title = "DateRecruitedDateFirstSeen" Then 
    If IsDate(.Range.Text) Then 
     DtEnd = CDate(.Range.Text) 
     With ActiveDocument.SelectContentControlsByTitle("DateofBirth")(1) 
     If IsDate(.Range.Text) Then DtStart = CDate(.Range.Text) 
     ActiveDocument.SelectContentControlsByTitle("Ageatlastbirthday ")(1).Range.Text = Int((DtEnd - DtStart)/365) 
     End With 
    End If 
    End If 
End With 
End Sub 

我打杀此代码到“的ThisDocument '部分作为具有ContentControlOnExit格式的文档,但仍不起作用。

请帮助修改成可行的代码。

+0

添加此代码在活动工作表,而不是文档。希望这个帮助 –

回答

0

对于初学者,您不需要“Dim CCtrl As ContentControl”。 这两个ContentControls都传递给Sub 更好是日期内容控件。如果.Range.Text不是日期,你的例程将不会执行任何操作。如果.Range.Text不是日期,最好发出可怕的警告。是的,你最好把一些诊断信息,看看有什么问题,如

Debug.Print .Range.Text