View Full Version : Combination of 2 types of dropdown list content control
elaineada75
04-22-2022, 10:08 PM
Can anyone advise me how to combine 2 dropdown list: 1 dropdown list with conditional content, another dropdown list with bookmarks. The below code cannot work and the row was cut away after updating the 2nd dropdown list.
Thanks.
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)Application.ScreenUpdating = False
Dim i As Long, StrDetails As String
'Dropdown list 1
With ContentControl
  If .Title = "NameofCompany" Then
    For i = 1 To .DropdownListEntries.Count
      If .DropdownListEntries(i).Text = .Range.Text Then
        StrDetails = .DropdownListEntries(i).Value
        Exit For
      End If
    Next
    If StrDetails = "" Then StrDetails = "||"
    With ActiveDocument.SelectContentControlsByTitle("Address")(1)
      .LockContents = False
      .Range.Text = Split(StrDetails, "|")(0)
      .LockContents = True
    End With
    With ActiveDocument.SelectContentControlsByTitle("Owner")(1)
      .LockContents = False
      .Range.Text = Split(StrDetails, "|")(1)
      .LockContents = True
    End With
    End If
End With
Application.ScreenUpdating = True
  
'dropdown list 2 - with bookmark
  Case ContentControl.Title
   Case "EditableC"
      Select Case ContentControl.Range.Text
        Case "YES": InsertBB_atBookmarkRange_Range "bmEditable", "EditableYesPara"
        Case "NO": InsertBB_atBookmarkRange_Range "bmEditable", "EditableNoPara"
        Case Else: InsertBB_atBookmarkRange_Range "bmEditable"
      End Select
  End Select
lbl_Exit:
  Exit Sub
  
End Sub
elaineada75
04-24-2022, 06:56 PM
Hi I have made adjustment to insert autotext instead of building blocks, but i still could not get it right. Can anyone tell me what is wrong with my code? The 2nd dropdown list not able to update the bookmark. May i know what is wrong here? Any help is appreciated. Thanks.
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
Application.ScreenUpdating = False
Dim i As Long, StrDetails As String
 
With ContentControl
  If .Title = "NameofCompany" Then
    For i = 1 To .DropdownListEntries.Count
      If .DropdownListEntries(i).Text = .Range.Text Then
        StrDetails = .DropdownListEntries(i).Value
        Exit For
      End If
    Next
    If StrDetails = "" Then StrDetails = "||"
    With ActiveDocument.SelectContentControlsByTitle("Address")(1)
      .LockContents = False
      .Range.Text = Split(StrDetails, "|")(0)
      .LockContents = True
    End With
    With ActiveDocument.SelectContentControlsByTitle("Owner")(1)
      .LockContents = False
      .Range.Text = Split(StrDetails, "|")(1)
      .LockContents = True
    End With
 
  If .Title = "EditableC" Then
    Select Case ContentControl.Title
    Case "YES": Call InsertAutoTextEntry
    Case Else: Call InsertAutoTextEntryNo
 
  End Select
 
  End If
    End If
 
End With
 
 
Application.ScreenUpdating = True
End Sub
 
Sub InsertAutoTextEntry()
 
Dim rngDoc1 As Range
 
Set rngDoc1 = ActiveDocument.Range.Bookmarks("bmEditable").Range
ActiveDocument.AttachedTemplate.AutoTextEntries("EditableYes").Insert _
Where:=rngDoc1, RichText:=True
 
End Sub
 
Sub InsertAutoTextEntryNo()
 
Dim rngDoc1 As Range
 
Set rngDoc1 = ActiveDocument.Range.Bookmarks("bmEditable").Range
ActiveDocument.AttachedTemplate.AutoTextEntries("EditableNo").Insert _
Where:=rngDoc1, RichText:=True
End Sub
gmaxey
04-27-2022, 07:30 PM
The content control title is either "NameofCompany" or "EditableC"   It can't be both.
elaineada75
04-27-2022, 07:59 PM
I have 2 content control, one is dropdown list (NameofCompany) and the other one is a checkbox (EditableC).
How to merge these 2 together in the macro? 
Sorry i am still trying very hard to learn to write macro in words. It is very different in excel. 
Thanks a lot.
gmaxey
04-28-2022, 05:06 AM
You have an event:  
Document_ContentControlOnExit
It fires when you exit a document content control. 
In that event, you have and If ... End If Statement.
You have told your macro to do something "IF" the Content Control title is "NameofCompany".
If the title isn't "NameofCompany" then the event does nothing e.g., it completely ignores the part of your code associated with "EditableC"
That is what you have programmed the event to do.
If you want to process both CCs then something like this:
  Select Case ContentControl.Title
     Case "NameofCompany"
        Do this
     Case "EditableC"
        Do something else 
  End Select
elaineada75
04-28-2022, 05:45 AM
Hi Hi
I somehow got it work, but when i add it another condition for the checkbox, it stops working.
Where did i get it wrong?
Pl help me. Thanks a lot.
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
 
Application.ScreenUpdating = False
Dim i As Long, StrDetails As String
 
  Dim oRng As Range
 
With ContentControl
 
 
  If .Title = "NameofCompany" Then
    For i = 1 To .DropdownListEntries.Count
      If .DropdownListEntries(i).Text = .Range.Text Then
        StrDetails = .DropdownListEntries(i).Value
        Exit For
      End If
    Next
    If StrDetails = "" Then StrDetails = "||"
    With ActiveDocument.SelectContentControlsByTitle("Address")(1)
      .LockContents = False
      .Range.Text = Split(StrDetails, "|")(0)
      .LockContents = True
    End With
    With ActiveDocument.SelectContentControlsByTitle("Owner1")(1)
      .LockContents = False
      .Range.Text = Split(StrDetails, "|")(1)
      .LockContents = True
    End With
  End If
 
  End With
 
    Set oRng = ActiveDocument.Bookmarks("bmEditSch").Range
    Set iRng = ActiveDocument.Bookmarks("bmEditAut").Range
   
    If ContentControl.Tag = "Checkbox1" Then
           If ContentControl.Checked = True Then
            If ActiveDocument.ContentControls("Owner1") = Sch Then
            oRng.Font.Hidden = False
            iRng.Font.Hidden = True
        Else
            oRng.Font.Hidden = True
            iRng.Font.Hidden = False
        End If
    End If
   End If
 
  
 
ActiveDocument.Fields.Update
Application.ScreenUpdating = True
 
End Sub
gmaxey
04-28-2022, 11:39 AM
ActiveDocument.SelectContentControlsByTitle("Owner1").Item(1).Range.Text = "Sch" Then
elaineada75
04-29-2022, 05:42 AM
Thanks so much, really appreciate it! It works!
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.