View Single Post
 
Old 01-10-2021, 08:41 AM
gmaxey gmaxey is offline Windows 10 Office 2016
Expert
 
Join Date: May 2010
Location: Brasstown, NC
Posts: 1,429
gmaxey is a jewel in the roughgmaxey is a jewel in the roughgmaxey is a jewel in the roughgmaxey is a jewel in the rough
Default Programatically create Fully Functional DropdownList (or ComboBox) Content Controls

Has anyone had any success (without using a sledgehammer) for creating and insert fully functional dropdown list contentcontrols?

A basic attempt (Attempt 1) produces a CC with the expected "Choose an item." displayed. But there is no "Choose an item." DD list entry, so no way for the user to re-select the null a null listing.

Code:
Sub Attempt1()
Dim oCC As ContentControl
  Set oCC = ActiveDocument.ContentControls.Add(wdContentControlDropdownList, Selection.Range)
  With oCC
    .DropdownListEntries.Add "A", "Apples"
    .DropdownListEntries.Add "B", "Beets"
  End With
  'Result: "Choose an item." is displayed but there is no null "Choose an item." entry in the resulting DD List.
lbl_Exit:
  Exit Sub
End Sub
With a little more grease, (Attempt 2) produces a CC with the expected "Choose an item." displayed and the expected "Choose an item." DD list entry, but if that entry is selected, the value displayed is the "text" variant of "Choose and item." not the expected null variant.


Code:
Sub Attempt2()
Dim oCC As ContentControl
  Set oCC = ActiveDocument.ContentControls.Add(wdContentControlDropdownList, Selection.Range)
  With oCC
    .DropdownListEntries.Add oCC.PlaceholderText, vbNullString
    .DropdownListEntries.Add "A", "Apples"
    .DropdownListEntries.Add "B", "Beets"
    'Result: "Choose an item." is displayed and there is a "Choose a item." in the DD List. _
    However, if that item is selected, the display is not displayed as null Placeholder text."
  End With
lbl_Exit:
  Exit Sub
End Sub
Now the sledgehammer. With (Attempt3), I first created a basic DDL content control with the built-in interface and saved it as a buildingblock. This works of course but requires access to a template.

Code:
Sub Attempt3()
Dim oRng As Range
Dim oCC As ContentControl
  'Requires a DDL inserted via built-in UI saved as a buildingblock entry.
  Set oRng = Selection.Range
  ThisDocument.AttachedTemplate.BuildingBlockEntries("BasicDDL").Insert oRng, True
  oRng.End = oRng.End + 2
  Set oCC = oRng.ContentControls(1)
  With oCC
    .DropdownListEntries.Add "A", "Apples"
    .DropdownListEntries.Add "B", "Beets"
    'Result: A fully functional DDL content control.
  End With
lbl_Exit:
  Exit Sub
End Sub
Has anyone found a way to do this without having to use the built-in UI or a template?


Cross posted at:
Programatically create Fully Funcitional DropdownList (or ComboBox) Content Controls
Programatically create Fully Funcitional DropdownList (or - Microsoft Community
__________________
Greg Maxey
Please visit my web site at http://www.gregmaxey.com/

Last edited by macropod; 01-10-2021 at 02:21 PM. Reason: Added code tags
Reply With Quote