2017-10-10 6 views
1

datefbirthというタイトルピックアップコンテンツコントロールとdatefirstseenというタイトルの2つの日付ピッカーコンテンツコントロールがあります。私は「ThisDocumentのにこのコードを帰属2つの日付ピッカーコンテンツコントロール間の日付の差異ワード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 

このコードを試してみました

フォーム題しageasatlastbirthdayの-同じ最初のページ上のテキストボックスコンテンツコントロールに計算される年間での差を決定しようとしました'セクションがContentControlOnExit形式のドキュメントとして表示されますが、それでも動作しません。

実行可能コードを変更してください。

+0

このコードを文書ではなくアクティブなシートに追加してください。希望このヘルプ –

答えて

0

まず、「Dim CCtrl As ContentControl」は必要ありません。 両方のContentControlsがサブにより良いに渡されるのは、コンテンツコントロールです。 .Range.Textが日付でない場合、ルーチンは何も行いません。 .Range.Textが日付でない場合は、警告を発することをお勧めします。うん、何かが間違っているかどうかを確認する診断メッセージを入れてください。

Debug.Print .Range.Text