How to insert color coded drop down list in Word table?

Supposing, I have a table in my Word document, and now, I want to insert color coded drop down list in a column of the table. It means when I select one option from the drop down, the cell color becomes red, and when I select another option in the drop down, the cell color becomes green as following screenshot shown. How could you solve this job in Word document?

doc color coded drop down

Insert color coded drop down list in Word document with VBA code


Insert color coded drop down list in Word document with VBA code

The following steps can help you to finish this task as you need, first, insert the drop down list, and then apply the color for the drop down. Please do as this:

1. Select a cell in the table where you want to insert the drop down, and then click Developer > Drop-Down List Content Control icon, see screenshot:

doc color coded drop down 1

2. The drop down is inserted into the specific cell, and then click Developer > Properties, see screenshot:

doc color coded drop down 2

3. In the Content Control Properties dialog box, please do the following operations:

(1.) Enter the title name into the Title text box;

(2.) Click Add button go to the Add Choice dialog;

(3.) In the Add Choice dialog, type the drop down list item into the Display Name text box.

doc color coded drop down 3

4. Repeat the Step 3 to insert other drop down list items as you need.

5. After creating the first drop down list, you can copy and paste it to other cells as you need. See screenshot:

doc color coded drop down 4

6. Then you should apply a VBA code, please hold down the ALT + F11 keys to open the Microsoft Visual Basic for Applications window.

7. In the Microsoft Visual Basic for Applications window, double click ThisDocument from the Project-Project pane to open the mode, and then copy and paste the following code into the blank module.

VBA code: Insert color coded drop down list into table of a Word document:

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
With ContentControl.Range
    If ContentControl.Title = "Status" Then
        Select Case .Text
            Case "Complete"
                .Cells(1).Shading.BackgroundPatternColor = wdColorRed
            Case "In Progress"
                .Cells(1).Shading.BackgroundPatternColor = wdColorGreen
            Case "Not Start"
                .Cells(1).Shading.BackgroundPatternColor = wdColorBlue
            Case Else
                .Cells(1).Shading.BackgroundPatternColor = wdColorAutomatic
        End Select
    End If
End With
End Sub

doc color coded drop down 5

Note: In the above code, Status is the title name when you creating the drop down list, and Complete, In Progress, Not Start are the items of the drop down list, you can change them to your own. And you can also change the color to your need.

8. Then save and close the code window, now, when you select one item from the drop down list, its relative color will be filled with the cell, see screenshot:

doc color coded drop down




Recommended Word Productivity Tools

 

Kutools For Word - More Than 100 Advanced Features For Word, Save Your 50% Time

  • Complicated and repeated operations can be done one-time processing in seconds.
  • Insert multiple images across folders into Word document at once.
  • Merge and combine multiple Word files across folders into one with your desired order.
  • Split the current document into separate documents according to heading, section break or other criteria.
  • Convert files between Doc and Docx, Docx and PDF, collection of tools for common conversions and selection, and so on...
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    B.Choi · 27 days ago
    Hello,

    I tried to create two color code drop down lists in one Word template, however, I get an error message saying 'Ambiguous name detected: Document_ContentControON EXIT. Could you please inform me what I have done wrong?


    Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
    With ContentControl.Range
    If ContentControl.Title = "Corrective action" Then
    Select Case .Text
    Case "Corrective action necessary"
    .Cells(1).Shading.BackgroundPatternColor = wdColorRed
    Case "No further action needed"
    .Cells(1).Shading.BackgroundPatternColor = wdColorGreen
    Case "Corrective action recommended"
    .Cells(1).Shading.BackgroundPatternColor = wdColorYellow
    Case Else
    .Cells(1).Shading.BackgroundPatternColor = wdColorAutomatic
    End Select
    End If
    End With
    End Sub
    Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
    With ContentControl.Range
    If ContentControl.Title = "Corrective action for cd" Then
    Select Case .Text
    Case "Use a new Cd curve"
    .Cells(1).Shading.BackgroundPatternColor = wdColorRed
    Case "Use an existing Cd curve"
    .Cells(1).Shading.BackgroundPatternColor = wdColorGreen
    Case "Check the setting and Probe"
    .Cells(1).Shading.BackgroundPatternColor = wdColorYellow
    Case Else
    .Cells(1).Shading.BackgroundPatternColor = wdColorAutomatic
    End Select
    End If
    End With


    Many thanks in advance for your support.
  • To post as a guest, your comment is unpublished.
    Hannah · 2 months ago
    Thank you for providing this it is so helpful! However I have come across a bug. When I create a new row in the table below a cell which has had the Drop Down list, it copies the colour of the above cell into this cell without the Drop Down List. If I then copy and paste the drop down list and change the option, it does not change the colour of the cell. Can anyone help?
  • To post as a guest, your comment is unpublished.
    SF · 5 months ago
    Hi, I've followed the steps a few times over but the colours don't appear at all?
  • To post as a guest, your comment is unpublished.
    kethryvalis · 8 months ago
    Thank you so much for sharing this! However, I'm running into a weird quirk. Sometimes, when I select an item from a drop-down menu and then click elsewhere in the document for it to apply the formatting, it does not work. It selects the proper word from the drop-down menu, but it just stays normal, black text. I have to undo back to before I selected anything, re-select the item from the drop-down menu, and then ONLY click in another drop-down menu to get the formatting to apply. Any ideas on why it's doing this and how I can fix it?
  • To post as a guest, your comment is unpublished.
    Hayley · 9 months ago
    Hello, is there a way to do multiple color-coded drop downs within one document? Thank you!
  • To post as a guest, your comment is unpublished.
    jaimes7 · 10 months ago
    Hi, awesome!!! But is there a way to change the color / text of another cell in the same row but in different column? For example: instead of changing the background of "Complete", change the background of "Project-001" . Help me please. Thanks in advance
    • To post as a guest, your comment is unpublished.
      skyyang · 8 months ago
      Hi, Jaimes,
      To solve your problem, please apply the below code:
      Note: In the code,the number 1 in the script Cells(1) is the column number of the table, you can chnage it tou your need.

      Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
      With ContentControl.Range
      If ContentControl.Title = "Status" Then
      Select Case .Text
      Case "Complete"
      .Rows(1).Cells(1).Shading.BackgroundPatternColor = wdColorRed
      Case "In Progress"
      .Rows(1).Cells(1).Shading.BackgroundPatternColor = wdColorGreen
      Case "Not Start"
      .Rows(1).Cells(1).Shading.BackgroundPatternColor = wdColorBlue
      Case Else
      .Rows(1).Cells(1).Shading.BackgroundPatternColor = wdColorAutomatic
      End Select
      End If
      End With
      End Sub

      Please try, hope it can help you!
  • To post as a guest, your comment is unpublished.
    Jericho · 1 years ago
    Can I color the entire corresponding row instead of just a cell?
    • To post as a guest, your comment is unpublished.
      skyyang · 11 months ago
      Hello, Jericho,
      The below code can help you to deal with your problem, please try it:(You can set the RGB color to your need)

      Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
      With ContentControl.Range
      If ContentControl.Title = "Status" Then
      Select Case .Text
      Case "Complete"
      .Rows.Shading.BackgroundPatternColor = RGB(255, 0, 0)
      Case "In Progress"
      .Rows.Shading.BackgroundPatternColor = RGB(0, 255, 64)
      Case "Not Start"
      .Rows.Shading.BackgroundPatternColor = RGB(0, 0, 255)
      Case Else
      .Rows.Shading.BackgroundPatternColor = wdColorAutomatic
      End Select
      End If
      End With
      End Sub
  • To post as a guest, your comment is unpublished.
    Raj · 1 years ago
    Instead of colors, could we use symbols? like if 'completed' display symbol with character code 252, if not started then symbol with character code 88 etc. can you share the vba code using symbols as display plz?
  • To post as a guest, your comment is unpublished.
    Patti · 1 years ago
    Could I modify this code to have it highlight any drop down choice without listing all of them out?
  • To post as a guest, your comment is unpublished.
    Shannon · 1 years ago
    Hi, Thank you for this. Is there a way of only changing the text color and not the entire cell?
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hi, Shannon,
      To change the text color instead of the background color, the below VBA code can help you, please try it, hope it can help you!

      Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
      With ContentControl.Range
      If ContentControl.Title = "Status" Then
      Select Case .Text
      Case "Complete"
      .Cells(1).Range.Font.Color = wdColorRed
      Case "In Progress"
      .Cells(1).Range.Font.Color = wdColorGreen
      Case "Not Start"
      .Cells(1).Range.Font.Color = wdColorBlue
      Case Else
      .Cells(1).Range.Font.Color = wdColorAutomatic
      End Select
      End If
      End With
      End Sub
      • To post as a guest, your comment is unpublished.
        brantala01@gmail.com · 1 years ago
        Struggling here to apply this as a style rather than a color or shade.
  • To post as a guest, your comment is unpublished.
    mark · 1 years ago
    Could I enter custom colors? (rgb)
  • To post as a guest, your comment is unpublished.
    Paul · 1 years ago
    this worked grate! Thanks. I tried to apply same code to another drop down content box in same document and I'm having trouble. Don't know how to get tweo in the VBA window. I get 'compile error, Ambiguous name detected: Document_ContentControlOnExit'
  • To post as a guest, your comment is unpublished.
    Z · 1 years ago
    When I exit and reopen the program, I have to reenter the VBA code. How do I make it so that it saves?
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello,
      To save the vba code when opening the file next time, you should save the word file as Word Macro-Enabled Document format. Please try it, hope it can help you!