#1
|
|||
|
|||
Macro to change an RGB table cell shading color to another RGB color
Hello, all,
I am looking for a macro to change an RGB table cell shading color to another RGB color. Can this be done? I searched and found nothing on the site. Thanks so much in advance, David |
#2
|
|||
|
|||
This is all I've found so far. It does not work for me.
Sub test() Dim rg As Range Set rg = ActiveDocument.Range With rg.Find .Format = True .Text = "" .Font.Shading.BackgroundPatternColor = RGB(225, 225, 153) .Replacement.Text = "" While .Execute rg.Font.Shading.BackgroundPatternColor = RGB(225, 225, 225) rg.Collapse wdCollapseEnd Wend End With End Sub |
#3
|
|||
|
|||
If the shading you want to change really is table cell shading, then (a) it is not .Font.Shading and (b) you can't use Range.Find to locate it. [There are three possible kinds of shading in a table cell, controlled by the dropdown in the Shading page of the Borders & Shading dialog: Text, Cell, and Table. In VBA each of them is addressed differently.]
This macro iterates through all the cells of each row of each table in the document and makes the change when it finds the proper color of Cell background shading. Code:
Sub test() Dim tbl As Table Dim rw As Row Dim cel As Cell For Each tbl In ActiveDocument.Tables For Each rw In tbl.Rows For Each cel In rw.Cells If cel.Shading.BackgroundPatternColor = RGB(225, 225, 153) Then cel.Shading.BackgroundPatternColor = RGB(225, 225, 225) End If Next cel Next rw Next tbl End Sub |
#4
|
|||
|
|||
Thank you. I know it wants to work, but, Dag nabbit, now I'm getting the attached Run-time error 5991.
I've researched it and can't figure out what code to put where. What I've seen looks something like this: Table table=Globals.ThisDocument.Tables[1]; Range range = table.Range; for (int i = 1; i <= range.Cells.Count; i++) { if(range.Cells[i].RowIndex == table.Rows.Count) range.Cells[i].Range.Text = range.Cells[i].RowIndex + ":" + range.Cells[i].ColumnIndex; } Any thoughts? Thanks so much, David |
#5
|
|||
|
|||
Word VBA always has refused to deal with rows in a table that contains vertically merged cells, or with columns in a table that contains horizontally merged cells. If your table has only vertically merged cells, you can run the For Each on the columns instead of the rows, like this:
Code:
Sub test() Dim tbl As Table Dim col As Column Dim cel As Cell For Each tbl In ActiveDocument.Tables For Each col In tbl.Columns For Each cel In col.Cells If cel.Shading.BackgroundPatternColor = RGB(225, 225, 153) Then cel.Shading.BackgroundPatternColor = RGB(225, 225, 225) End If Next cel Next col Next tbl End Sub Code:
Sub test() Dim tbl As Table Dim cel As Cell For Each tbl In ActiveDocument.Tables For Each cel In tbl.Range.Cells If cel.Shading.BackgroundPatternColor = RGB(225, 225, 153) Then cel.Shading.BackgroundPatternColor = RGB(225, 225, 225) End If Next cel Next tbl End Sub |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
How to change the font color of specific text within a Word table cell | epid011 | Word Tables | 2 | 05-15-2017 05:21 PM |
looking to change cell color by typing number into the cell | ibs | Word Tables | 1 | 11-22-2016 06:31 PM |
How to change the font color of cell values | sky474 | Excel | 7 | 03-06-2014 09:15 AM |
Change Cell Color Based On % Complete | jrfoley3 | Project | 1 | 05-30-2013 05:24 AM |
Creating a Macro to change the shading of a cell | Triscia | Word VBA | 3 | 01-30-2013 04:18 PM |