Thread: [Solved] Make a field required
View Single Post
 
Old 08-03-2022, 09:57 PM
Guessed's Avatar
Guessed Guessed is offline Windows 10 Office 2016
Expert
 
Join Date: Mar 2010
Location: Canberra/Melbourne Australia
Posts: 4,166
Guessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant future
Default

Your code can temporarily change the CC to make it editable and then change it back after it is edited.
Code:
Private Sub Document_ContentControlOnExit(ByVal aCC As ContentControl, Cancel As Boolean)
  Dim aDate As Date, ccDue As ContentControl
  If aCC.ShowingPlaceholderText Then
    Select Case aCC.Tag
      Case "Rev. #", "PDR #", "Date of Discovery", "Type"   'these CCs require an answer
        MsgBox "This Content Control requires a response.", vbInformation + vbOKOnly, "INPUT REQUIRED"
        Cancel = True
    End Select
  Else    'if CC has content, check its type matches the content
    If aCC.Tag Like "*[#]" Then     'if the CCs tag ends with '#'
      If Not IsNumeric(aCC.Range.Text) Then
        MsgBox "This field requires a numeric response.", vbInformation + vbOKOnly, "INPUT REQUIRED"
        Cancel = True
      End If
    ElseIf aCC.Tag Like "*Date*" Then   'if CCs tag includes 'Date'
      If Not IsDate(aCC.Range.Text) Then
        MsgBox "This field requires a date response.", vbInformation + vbOKOnly, "INPUT REQUIRED"
        Cancel = True
      ElseIf aCC.Title = "Date of Initiation" Then    'note tag doesn't match on this CC in your doc
        aDate = CDate(aCC.Range.Text) + 30
        Set ccDue = ActiveDocument.SelectContentControlsByTitle("Due Date")(1)
        ccDue.LockContents = False
        ccDue.Range.Text = Format(aDate, "d mmm yyyy")    'if date picker, format may be as per CC property
        ccDue.LockContents = True
      End If
    End If
  End If
End Sub
__________________
Andrew Lockton
Chrysalis Design, Melbourne Australia
Reply With Quote