1

我有两个名为 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”部分,但它仍然不起作用。

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

4

1 回答 1

0

对于初学者,您不需要“Dim CCtrl As ContentControl”。传入 Sub 的两个 ContentControl最好是日期内容控件。如果 .Range.Text 不是日期,您的例程将什么也不做。如果 .Range.Text 不是日期,您最好发出可怕的警告。是的,你最好输入一些诊断信息,看看出了什么问题,比如

Debug.Print .Range.Text
于 2017-10-13T03:42:25.983 回答