【问题标题】:date difference in years between two date picker content controls word 2016 vba code两个日期选择器内容控件之间的年份日期差异 word 2016 vba 代码
【发布时间】:2018-12-22 03:14:37
【问题描述】:

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

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

【问题讨论】:

  • 将此代码添加到活动工作表中,而不是文档中。希望对您有所帮助

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


【解决方案1】:

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

Debug.Print .Range.Text

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多