Forum Discussion
Use "Value" Field from Drop-Down List Properties with a Combo Box Content Control
I apologize for the confusion. Achieving the desired functionality without using VBA is not possible in Word with the version you mentioned (Microsoft 365 MSO, Version 2304, Build 16.0.16327.20200). The functionality to dynamically populate a field with the initials based on a selected item from a combo box drop-down list requires the use of VBA.
Here are all the steps how you can do it:
- Open your Word document and navigate to the Developer tab. If you don't see the Developer tab in the ribbon, you'll need to enable it first. Go to "File" > "Options" > "Customize Ribbon" and check the box next to "Developer" in the right-hand column. Then click "OK."
- In the Developer tab, click on the "Design Mode" button in the Controls group to enable design mode.
- Click on the Combo Box Content Control button in the Controls group to insert a combo box into your document.
- Right-click on the combo box and choose "Properties" from the context menu.
- In the Content Control Properties dialog box, go to the "Dropdown List Properties" tab.
- In the "Display Name" column, enter the full names of the persons (e.g., "John Smith" or "Mary Jones") and in the "Value" column, enter their corresponding initials (e.g., "JS" or "MJ"). You can add multiple items by clicking the "Add" button.
- Click "OK" to close the Content Control Properties dialog box.
- Double-click on the combo box to open the VBA editor.
- In the VBA editor, paste the following code:
Private Sub ComboBox1_Change()
Dim fullName As String
Dim initials As String
fullName = ComboBox1.Text
initials = GetInitials(fullName)
ActiveDocument.SelectContentControlsByTitle("ComboBox1").Item(1).Range.Text = initials
End Sub
Function GetInitials(fullName As String) As String
Dim nameParts() As String
Dim i As Integer
nameParts = Split(fullName)
GetInitials = ""
For i = LBound(nameParts) To UBound(nameParts)
GetInitials = GetInitials & Left(nameParts(i), 1)
Next i
End Function​10. Close VBA Editor.
Now, when users select a person's full name from the combo box, the field will be populated with the corresponding initials.
That these instructions are based on the version of Word you mentioned (Microsoft 365 MSO, Version 2304, Build 16.0.16327.20200).
I hope that all misunderstandings have been cleared up and that the instructions will be successful in your plans
.
- Dec 07, 2023
briannabang Assuming that you are using Content Controls as was originally the case in this thread, you will need to use the ContentControlOnExit property to get hold of the item selected from the dropdown list and then by reference to a source where you have the corresponding addresses obtain the address for insertion in the required location.
If you are not fixed on using Content Controls, it can be better to make use of a UserForm.
See the following pages of Greg Maxey's website :