2017-10-10 65 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