![]() |
|
#1
|
|||
|
|||
|
Hi,
I have created a table, where I want one column to be colour coded based on their grade. When I run the macro though, it runs on the whole table rather than selected column. Is there a way to get it to just run on selected column, or is there some code I could put in that would target the column based on a word included in the title, and then format that column only? Sure its something simple, but I'm new to this! Dim c As Word.Cell If Selection.Information(wdWithInTable) Then For Each c In Selection.Tables(1).Range.Cells If IsNumeric(Left(c.Range.Text, Len(c.Range.Text) - 1)) Then If Val(c.Range.Text) = 1 Then c.Shading.BackgroundPatternColor = 10669990 ElseIf Val(c.Range.Text) = 2 Then c.Shading.BackgroundPatternColor = 12443072 ElseIf Val(c.Range.Text) = 3 Then c.Shading.BackgroundPatternColor = 10546144 ElseIf Val(c.Range.Text) = 4 Then c.Shading.BackgroundPatternColor = 12512766 ElseIf Val(c.Range.Text) = 5 Then c.Shading.BackgroundPatternColor = 12440539 ElseIf Val(c.Range.Text) = 6 Then c.Shading.BackgroundPatternColor = 9813759 ElseIf Val(c.Range.Text) = 7 Then c.Shading.BackgroundPatternColor = 12233699 ElseIf Val(c.Range.Text) = 8 Then c.Shading.BackgroundPatternColor = 12830711 ElseIf Val(c.Range.Text) = 9 Then c.Shading.BackgroundPatternColor = 12830711 ElseIf Val(c.Range.Text) < 9 Then c.Shading.BackgroundPatternColor = wdColorWhite Else c.Shading.BackgroundPatternColor = wdColorWhite End If Else ' set non-numeric to White c.Shading.BackgroundPatternColor = wdColorWhite End If Next End If End Sub |
|
#2
|
||||
|
||||
|
Assuming that your table does not have merged or split cells and there is a header row, then the following macro will look for the column header 'Score' (change as appropriate) then will use your process to format only that column:
Code:
Sub Macro1()
Dim oTable As Table
Dim c As Word.Cell
Dim iCol As Integer
Set oTable = Selection.Tables(1) 'or ActiveDocument.Tables(1)
For iCol = 1 To oTable.Columns.Count
If InStr(1, oTable.Rows(1).Cells(iCol), "Score") > 0 Then
For Each c In oTable.Range.Columns(iCol).Cells
If IsNumeric(Left(c.Range.Text, Len(c.Range.Text) - 1)) Then
If Val(c.Range.Text) = 1 Then
c.Shading.BackgroundPatternColor = 10669990
ElseIf Val(c.Range.Text) = 2 Then
c.Shading.BackgroundPatternColor = 12443072
ElseIf Val(c.Range.Text) = 3 Then
c.Shading.BackgroundPatternColor = 10546144
ElseIf Val(c.Range.Text) = 4 Then
c.Shading.BackgroundPatternColor = 12512766
ElseIf Val(c.Range.Text) = 5 Then
c.Shading.BackgroundPatternColor = 12440539
ElseIf Val(c.Range.Text) = 6 Then
c.Shading.BackgroundPatternColor = 9813759
ElseIf Val(c.Range.Text) = 7 Then
c.Shading.BackgroundPatternColor = 12233699
ElseIf Val(c.Range.Text) = 8 Then
c.Shading.BackgroundPatternColor = 12830711
ElseIf Val(c.Range.Text) = 9 Then
c.Shading.BackgroundPatternColor = 12830711
ElseIf Val(c.Range.Text) < 9 Then
c.Shading.BackgroundPatternColor = wdColorWhite
Else
c.Shading.BackgroundPatternColor = wdColorWhite
End If
Else ' set non-numeric to White
c.Shading.BackgroundPatternColor = wdColorWhite
End If
Next c
End If
Next iCol
Set oTable = Nothing
Set c = Nothing
End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
|
#3
|
|||
|
|||
|
Graham has provided a good solution, as usual.
Note that conditional formatting is far easier to achieve using Excel. You may want to use that for this part. |
|
| Tags |
| colour, formatting cells from vba, vba |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Conditional Formatting that highlights cells when there was a change in another column
|
Marcia | Excel | 4 | 04-28-2019 07:34 AM |
| How to fill a cell at row and column intersection with conditional Formatting | Iraj | Excel | 10 | 12-02-2017 09:54 AM |
| Conditional Formatting a column | Washbue1 | Excel | 3 | 01-27-2017 01:11 PM |
Conditional Formatting not expanding along with the table expanded
|
tinfanide | Excel | 3 | 10-07-2014 10:00 AM |
| Conditional Formatting: How to dynamically apply to an expanding table? | tinfanide | Excel | 0 | 10-18-2013 06:34 AM |