我有两个日期选择器内容控件名为dateofbirth,另一个名为datefirstseen。我尝试在名为ageasatlastbirthday的表格的同一页面上确定要计算到文本框内容控件中的年份差异
我试过这段代码
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
我将此代码作为具有ContentControlOnExit格式的文档归入“thisdocument”部分,但它仍然不起作用。
请帮助修改为可行的代码。
答案 0 :(得分:0)
对于初学者,您不需要“Dim CCtrl As ContentControl”。 传入Sub better 的ContentControl都是日期内容控件。如果.Range.Text不是日期,则您的例程将不执行任何操作。如果.Range.Text不是日期,则最好发出可怕警告。是的,你最好输入一些诊断信息,看看出了什么问题,比如
Debug.Print .Range.Text