У меня есть макрос в MS Word 2013 VBA (не Excel), который переключает цвет выделения выделенного текста. Код выглядит так:
If Selection.Range.HighlightColorIndex = WhtColor Then Selection.Range.HighlightColorIndex = wdNoHighlight Else Selection.Range.HighlightColorIndex = WhtColor
Это отлично подходит для непрерывного / непрерывного выделения. Но если я выберу, скажем, 4 несмежных строки в таблице Word (скажем, строки 5, 12, 15 и 19), макрос выделит только последнюю выбранную строку.
Как мне заставить HighlightColorIndex применяться ко всем «частям» несмежного диапазона, или как пройти через разные «части» диапазона и применить HighlightColorIndex к каждой части?
Цикл по частям несмежного выделения в MS * Word * VBA
Ответы (1)
Веб-страница, на которую указывает Тим Уильямс (support.microsoft.com/en-us/kb/ 288424) дает представление о том, как это возможно. Но эта ссылка действительно показывает, что нельзя перебрать несмежный выбор.
Тем не менее, эта ссылка также показывает, что форматирование шрифта можно установить для несмежного выделения, но не для объекта диапазона.
Вот исправленный код, который действительно работает для несмежного выделения:
If Selection.Font.Shading.BackgroundPatternColor = WhtColor Then Selection.Font.Shading.BackgroundPatternColor = wdColorAutomatic Else Selection.Font.Shading.BackgroundPatternColor = WhtColor
Этот код изменит цвет фона на выбранный целевой цвет (хотя мне пришлось изменить цветовые коды с констант Wd на константы WdColor).
Единственным недостатком этого подхода является то, что я не знаю способа поиска текста, цвет фона которого был изменен, тогда как вы можете искать выделенный текст.
В любом случае, спасибо @Tim Williams за полезную ссылку. Надеюсь, что приведенное выше поможет кому-то еще, кто просто хочет изменить свойства шрифта и на самом деле не должен перебирать отдельные части выбранного диапазона.