![]() |
|
|
|
#1
|
|||
|
|||
|
Thank you, it works as expected for a single title of CCs. When I try to adapt the code for an array of names (I need to check about 20 differently named CCs and their duplicates) using cycle For ... Next, the result is dissapointing. For example, for two CCs named "A" with contents "1" and "2" and CCs named "B" with contents "3" and "4" the result is CCs "A" with content "12" and "B" with "3, 412". And it is expect "A" with "1, 2" and "B" with "3, 4". What is wrong? Here is the code I have used: Code:
Sub Demo()
Dim i, j As Long, StrTtl As String, StrTxt As String, CCnames
CCnames = Array("A", "B"): StrTxt = "|"
For j = 0 To UBound(CCnames)
With ActiveDocument
On Error Resume Next
For i = .SelectContentControlsByTitle(CCnames(j)).Count To 2 Step -1
With .SelectContentControlsByTitle(CCnames(j))(i)
If InStr(StrTxt, "|" & Trim(.Range.Text) & "|") > 0 Then
.Range.Text = vbNullString
.Delete
ElseIf .ShowingPlaceholderText = True Then
.Delete
Else
StrTxt = "|" & Trim(.Range.Text) & StrTxt
.Range.Text = vbNullString
.Delete
End If
End With
Next
With .SelectContentControlsByTitle(CCnames(j))(1).Range
StrTxt = Replace(StrTxt, "|" & Trim(.Text), "")
StrTxt = Left(StrTxt, Len(StrTxt))
StrTxt = Replace(StrTxt, "|", ", ")
.Text = Trim(.Text) & StrTxt
End With
End With
Next
|
|
#2
|
||||
|
||||
|
Quote:
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#3
|
|||
|
|||
|
Quote:
Now the code works as expected Code:
Sub Demo()
Dim i, j As Long, StrTtl As String, StrTxt As String, CCnames
CCnames = Array("A", "B", "C"): StrTxt = "|"
For j = 0 To UBound(CCnames)
With ActiveDocument
On Error Resume Next
For i = .SelectContentControlsByTitle(CCnames(j)).Count To 2 Step -1
With .SelectContentControlsByTitle(CCnames(j))(i)
If InStr(StrTxt, "|" & Trim(.Range.Text) & "|") > 0 Then
.Range.Text = vbNullString
.Delete
ElseIf .ShowingPlaceholderText = True Then
.Delete
Else
StrTxt = "|" & Trim(.Range.Text) & StrTxt
.Range.Text = vbNullString
.Delete
End If
End With
Next
With .SelectContentControlsByTitle(CCnames(j))(1).Range
StrTxt = Replace(StrTxt, "|" & Trim(.Text), "")
StrTxt = Left(StrTxt, Len(StrTxt) - 1)
StrTxt = Replace(StrTxt, "|", ", ")
.Text = Trim(.Text) & StrTxt
StrTxt = "|"
End With
End With
Next
End Sub
|
|
| Tags |
| content controls |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Macro to save docx to doc that checks compatibility and converts content controls to static content. | staicumihai | Word VBA | 4 | 10-12-2016 08:23 PM |
Bookmark content controls
|
silverspr | Word VBA | 24 | 06-14-2016 05:19 AM |
| VBA for content controls | ciresuark | Word VBA | 1 | 03-10-2015 03:14 PM |
Content Controls
|
Sammie0Sue | Word | 6 | 11-06-2013 10:56 PM |
Grouping Content Controls
|
cksm4 | Word VBA | 2 | 03-01-2011 12:46 PM |