![]() |
|
#2
|
||||
|
||||
|
Hmmm. I can foresee a couple of issues here.
1. As you can only make one selection from a combo box, the only justification for having four rich text controls would be if the four related paragraphs are scattered around the document. Otherwise you could put the related values in just one control. 2. As you point out, a combo box allows for user entry. What do you want entered if the user enters in a non-standard text? 3. You can make the unused content controls disappear by filling them with a zero length space - ChrW(8203) The following code Will do what you describe. It goes in the ThisDocument module Code:
Option Explicit
Private OCC As ContentControl
Private sNul As String
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
Dim sCC As String
sNul = ChrW(8203)
If ContentControl.Title = "Combo1" Then
If ContentControl.ShowingPlaceholderText = False Then
Select Case Trim(ContentControl.Range.Text)
Case "BCA_DCC"
For Each OCC In ActiveDocument.ContentControls
If OCC.Title = "BCA_DCC.TXT" Then
OCC.Range.Text = "Paragraph 1"
Else
If OCC.Type = wdContentControlRichText Then
OCC.Range.Text = sNul
End If
End If
Next OCC
Case "BCA_NODCC"
For Each OCC In ActiveDocument.ContentControls
If OCC.Title = "BCA_NODCC.TXT" Then
OCC.Range.Text = "Paragraph 2"
Else
If OCC.Type = wdContentControlRichText Then
OCC.Range.Text = sNul
End If
End If
Next OCC
Case "SOA_DCC"
For Each OCC In ActiveDocument.ContentControls
If OCC.Title = "SOA_DCC.TXT" Then
OCC.Range.Text = "Paragraph 3"
Else
If OCC.Type = wdContentControlRichText Then
OCC.Range.Text = sNul
End If
End If
Next OCC
Case "SOA_NODCC"
For Each OCC In ActiveDocument.ContentControls
If OCC.Title = "SOA_NODCC.TXT" Then
OCC.Range.Text = "Paragraph 4"
Else
If OCC.Type = wdContentControlRichText Then
OCC.Range.Text = sNul
End If
End If
Next OCC
Case Else
For Each OCC In ActiveDocument.ContentControls
If OCC.Type = wdContentControlRichText Then
OCC.Range.Text = sNul
End If
Next OCC
End Select
Else
For Each OCC In ActiveDocument.ContentControls
If OCC.Type = wdContentControlRichText Then
OCC.Range.Text = sNul
End If
Next OCC
End If
End If
End Sub
Code:
Private Sub Document_New()
sNul = ChrW(8203)
For Each OCC In ActiveDocument.ContentControls
If OCC.Type = wdContentControlRichText Then
OCC.Range.Text = sNul
End If
Next OCC
End Sub
You will also need a macro to display them again for the purpose of editing (or you could use Insert Content Control Add-In Code:
Sub ShowCCs()
Dim oCC As ContentControl
For Each oCC In ActiveDocument.ContentControls
oCC.Range.Text = ""
Next oCC
End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
| Tags |
| content controls, macros, vba |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Link text field to dropdown list
|
borus | Word | 3 | 08-16-2023 05:36 AM |
| Text based on selection of dropdown list | cloud67 | Word VBA | 2 | 08-09-2019 06:46 AM |
| Copy Formatted Text in one Rich Text Content Control to another Rich Text Content Control | Haygordon | Word | 1 | 04-05-2019 05:43 AM |
Mutiple drop down list connected to rich text in one document
|
nikesh01 | Word VBA | 1 | 02-05-2016 01:06 PM |
| VBA: How to place dropdown list next to text | YigalB | Word VBA | 0 | 08-11-2013 01:48 PM |