![]() |
|
|
|
#1
|
|||
|
|||
|
I need a macro to find a text string "{Friday Workshop}" in a table. If that string is found, I want the entire row of the table it is in to be filled with a color (let's say yellow). There will be several tables in the document, and several instances of the string should be found.
There will be other text strings, too, like "{Saturday Breakfast}" or "{Sunday Workshop}". All rows that contain any of these strings need to be highlighted yellow. The text will always be in the far left column of the table, if that matters. (Note I have the brackets as part of my strings so I can delete that text easily after highlighting all the appropriate rows.) Thank you! |
|
#2
|
||||
|
||||
|
Try:
Code:
Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "\{[MTWFS][ondayueshrit]{2,7} Workshop\}"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
.Execute
End With
Do While .Find.Found
If .Information(wdWithInTable) = True Then
.Rows(1).Shading.BackgroundPatternColorIndex = wdYellow
'.Delete
End If
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Application.ScreenUpdating = True
End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#3
|
|||
|
|||
|
Thank you so much for replying. I used your exact code, except I replaced the Find text with my actual text. I am getting a Run-time error 5560: The Find What text contains a pattern match expression which is not valid.
My code below: Sub Demo() Application.ScreenUpdating = False With ActiveDocument.Range With .Find .ClearFormatting .Replacement.ClearFormatting .Text = "{Sat Breakfast}" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = False .MatchWildcards = True .Execute End With Do While .Find.Found If .Information(wdWithInTable) = True Then .Rows(1).Shading.BackgroundPatternColorIndex = wdYellow '.Delete End If .Collapse wdCollapseEnd .Find.Execute Loop End With Application.ScreenUpdating = True End Sub Any other ideas? |
|
#4
|
||||
|
||||
|
Your code fails because it lacks the \ before the { and }. Without that, those characters act as wildcard escape characters ebut what you have between them then doesn't conform to what a wildcard search requires to be between them.
Try: Code:
Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "\{[MTWFS][onuedhuriat]{2} Workshop\}"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
.Execute
End With
Do While .Find.Found
If .Information(wdWithInTable) = True Then
.Rows(1).Shading.BackgroundPatternColorIndex = wdYellow
'.Delete
End If
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Application.ScreenUpdating = True
End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#5
|
|||
|
|||
|
Works beautifully! And the Delete part, too. Thank you very much!!
|
|
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Inserting a Merged Row after a certain text is found in a table
|
Snaybot | Word VBA | 13 | 09-30-2015 03:12 PM |
Table, font color based on what word is in cell
|
donaldadams1951 | Word Tables | 1 | 04-15-2015 08:37 PM |
| Color-fill a range of cells, based on text in a different sheet. Possible? | unittwentyfive | Excel | 2 | 06-01-2014 06:48 AM |
Word VBA Macro to Find and Replace based on the Alt Text of an Image
|
bennymc | Word VBA | 1 | 01-27-2014 04:23 PM |
Word 2003 - Macro to color a row in table?
|
cyberpaper | Word | 2 | 01-03-2013 02:07 PM |