ActiveDocument.Tables (k) .Range.Cells (j) .Shading.BackgroundPatternColor возвращает -1 - PullRequest
0 голосов
/ 27 октября 2011

У меня есть документ Word 2007 с множеством таблиц.В каждой таблице есть определенные ячейки, заполненные двумя пользовательскими цветами.Я создал макрос, который принимает входные значения 3 для подачи функции RGB, создавая один из цветов, сопоставляя его с каждым из цветов и изменяя совпадение с новым цветом.

Я использовал If оператор, который сравнивает цвет заполненной ячейки с цветом, возвращаемым функцией RGB, передавая функцию с вводом, данным пользователем.

If ActiveDocument.Tables(k).Range.Cells(j).Shading.BackgroundPatternColor = RGB(inputRed, inputGreen, inputBlue) Then
       'code
end if

Пока я просматривал документ, чтобы увидеть результатыЯ заметил, что несколько ячеек из 3 таблиц остались со старым цветом, поэтому, по-видимому, макрос не смог его распознать.

В Word 2007 я выбрал ячейку, в которой должен был измениться цвет.Я перешел к Домой -> Затенение -> Другие цвета -> Пользовательский и увидел 3 значения, которые идеально совпадают с 3 значениями, заданными в качестве ввода пользователем.

После 30 минут просмотраНа мониторе я подумал о том, чтобы пойти к врачу, чтобы проверить мои глаза.:)

Прежде чем сделать это, я начал отлаживать приложение.на каждой из ячеек, которые не были изменены.Изучив эту строку:
ActiveDocument.Tables(k).Range.Cells(j).Shading.BackgroundPatternColor
я увидел, что она вернулась -1 .

Я думаю, что -1 эквивалентно нулю или нулю, означая, что либоячейка не заполнена, но если да, то почему я вижу значения RGB?Или, возможно, система не может прочитать значения RGB, но кто эта система?

У вас есть ссылка, где метод Shading.BackgroundPatternColor хорошо объяснен?

1 Ответ

1 голос
/ 29 октября 2011

Не знаю, какое значение равно -1, но цвета в Word 2007 изменились незначительно, так что значения больше не были значениями RGB.Я много писал об этом - см. http://www.wordarticles.com/Articles/Colours/2007.php

...