两个日期选择器内容之间的日期差异控制单词2016年vba代码

时间:2017-10-10 12:02:01

标签: vba datepicker ms-word date-difference word-contentcontrol

我有两个日期选择器内容控件名为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”部分,但它仍然不起作用。

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

1 个答案:

答案 0 :(得分:0)

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

Debug.Print .Range.Text