2017-10-10 4 views
1

나는 dateofbirth라는 제목의 날짜 선택기 컨텐트 컨트롤과 datefirstseen이라는 두 개의 날짜 선택기 컨텐트 컨트롤이 있습니다. 난 I가 '의 ThisDocument이 코드를 전가두 날짜 선택 도구 콘텐츠 컨트롤 사이의 날짜 차이 날짜 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