Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > Форум Форум программистов > Форум Basic > Форум VBA
Восстановить пароль Регистрация

Ответ Создать новую тему
 
02.05.2011, 22:55   #1
diletant2
Форумчанин
 
Регистрация: 02.05.2011
Сообщений: 102
Репутация: 3 (1)
Лучшие ответы: 1
Выделение несвязного текста цветом / VBA

столкнулся с проблемой: если в тексте ФЫВАПРОЛДЖЭЯ ФЫВАПРОЛДЖЭЯ ФЫВАПРОЛДЖЭЯ ФЫВАПРОЛДЖЭЯ выделить несвязанные области (выделено жирным) и через меню выбрать Цвет выделения текста =Текст будет выглядеть так, как если бы он был закрашен фломастером, то все выделенное закрасится: ФЫВАПРОЛДЖЭЯ ФЫВАПРОЛДЖЭЯ ФЫВАПРОЛДЖЭЯ ФЫВАПРОЛДЖЭЯ (выделено красным, сорри, не знаю как здесь выделить цветом...), а вот если записать макрос (например, выделение желтым цветом):

Options.DefaultHighlightColorIndex = wdYellow
Selection.Range.HighlightColorIndex = wdYellow

и потом применить его к таким же образом выделенному тексту (несвязанное выделение), то получим закраску только последнего выделенного фрагмента, при этом другие фрагменты - останутся нетронутыми: ФЫВАПРОЛДЖЭЯ ФЫВАПРОЛДЖЭЯ ФЫВАПРОЛДЖЭЯ ФЫВАПРОЛДЖЭЯ (подчеркнуто)!
как же получить код, делающий закраску, как через меню?
02.05.2011, 22:55
AdAgent
Объявления
03.05.2011, 02:06   #2
Вождь
Форумчанин
 
Регистрация: 18.02.2010
Сообщений: 76
Репутация: 75 (38)
Лучшие ответы: 8
Выделение несвязного текста цветом

Когда выбрано несколько фрагментов, полезны встроенные команды MS Word, которые работают аналогично командам меню. В данном случае подойдет команда Highlight. Делаем так:
Код Visual Basic
1
2
    Options.DefaultHighlightColorIndex = wdYellow
    Application.Run "Highlight"
Другие темы раздела
VBA ИЗМЕНЕНИЕ ФОРМУЛЫ ЧЕРЕЗ VBA
Приветствую ВСЕХ!!! :D Столкнулся с такой проблемой. Необходимо в формуле округление до 2-х знаков изменить на округление до 4-х знаков. (в EXCEL через VBA). Пытался это сделать через текстовые функции (заменить, подставить). Но из всех функций корректно сработала только одна - которая определяет...
VBA VBA: Завершить показ слайдов в MS PowerPoint
Доброго времени суток. Не подскажите как будет выглядеть команда завершения показа слайдов на VBA ?
03.05.2011, 02:59  [ТС]   #3
diletant2
Форумчанин
 
Регистрация: 02.05.2011
Сообщений: 102
Репутация: 3 (1)
Лучшие ответы: 1
Выделение несвязного текста цветом

спасибо, работает!
вдогонку, если можно, еще одна проблема: если выделить не связанные между собой фрагменты текста и закрасить фон таким кодом

Selection.Shading.BackgroundPatternColor = wdColorLightTurquoise

то попытка удалить сразу все такие раскраски с помощью кода

Selection.Shading.BackgroundPatternColor = wdColorAutomatic

ни к чему не приводит, если фрагменты принадлежат к разным абзацам (правда, если выделить мышкой только эти фрагменты текста с раскрашенным фоном без захвата знаков абзаца, то тогда получится), но это неудобно вручную выделять все эти фрагменты текста, особенно на больших текстах (например, после сканирования и распознавания, когда возможные ошибки подкрашиваются именно фоном), проще выделить все Ctrl+A и применить макрос, но какой?
03.05.2011, 04:47   #4
Вождь
Форумчанин
 
Регистрация: 18.02.2010
Сообщений: 76
Репутация: 75 (38)
Лучшие ответы: 8
Выделение несвязного текста цветом

Надо различать заливку абзаца (Paragraph.Shading) и текста (Font.Shading). При Selection.Shading автоматически обрабатывается что-то одно. Поэтому лучше указывать конкретно, что закрашивать. В вашем случае надо очищать сразу все:
Код Visual Basic
1
2
    Selection.Font.Shading.BackgroundPatternColor = wdColorAutomatic
    Selection.Paragraphs.Shading.BackgroundPatternColor = wdColorAutomatic
03.05.2011, 04:47
AdAgent
Объявления
03.05.2011, 14:16  [ТС]   #5
diletant2
Форумчанин
 
Регистрация: 02.05.2011
Сообщений: 102
Репутация: 3 (1)
Лучшие ответы: 1
Выделение несвязного текста цветом

спасибо, все работает!
но вот еще проблема: если в документе залить фон цветом в области, включающей несколько абзацев, таблицу и еще несколько абзацев после нее, то заливка таблицы будет не сплошной, а с белыми полосками по краям каждой ячейки. если потом выделить только таблицу, скопировать ее в другой документ, снова выделить только таблицу - то удалить цвет фона даже через меню не получается, что делать?

конечно, если выделить не только таблицу, а захватить еще несколько абзацев выше или ниже ее, то цвет фона уберется, но как быть, если нужно сохранить цвет фона всего документа, а от цвета фона только таблицы избавиться?
03.05.2011, 15:57   #6
Вождь
Форумчанин
 
Регистрация: 18.02.2010
Сообщений: 76
Репутация: 75 (38)
Лучшие ответы: 8
Выделение несвязного текста цветом

Как я уже писал, при изменении заливки кнопкой "Заливка", Ворд выбирает что-то одно (текст, абзац, таблица и др.), в зависимости от того, что выбрано. Но в окне "Границы и заливка" можно указать все детально, в т.ч. и объект с которым работаем. Окно "Границы и заливка" есть во всех версиях Ворд.
03.05.2011, 16:43  [ТС]   #7
diletant2
Форумчанин
 
Регистрация: 02.05.2011
Сообщений: 102
Репутация: 3 (1)
Лучшие ответы: 1
Выделение несвязного текста цветом

увы, через "Границы и заливку" тоже не пашет для таблицы
и само действие желательно повесить на хоткей

Добавлено через 18 минут
P.S. кстати, при заливке через "Границы и заливка" - окрашивает/обесцвечивает только эти белые полоски по краям ячейки...
03.05.2011, 18:10   #8
Вождь
Форумчанин
 
Регистрация: 18.02.2010
Сообщений: 76
Репутация: 75 (38)
Лучшие ответы: 8
Выделение несвязного текста цветом

Цитата Сообщение от diletant2 Посмотреть сообщение
...залить фон цветом в области, включающей несколько абзацев, таблицу...
В этом случае изменяется заливка абзацев, а не таблицы. Т.е. выбрав таблицу, надо очистить заливку абзацев.
03.05.2011, 18:28  [ТС]   #9
diletant2
Форумчанин
 
Регистрация: 02.05.2011
Сообщений: 102
Репутация: 3 (1)
Лучшие ответы: 1
Выделение несвязного текста цветом

Цитата Сообщение от Вождь Посмотреть сообщение
выбрав таблицу, надо очистить заливку абзацев.
как это?
можете привести код?
03.05.2011, 18:56   #10
Вождь
Форумчанин
 
Регистрация: 18.02.2010
Сообщений: 76
Репутация: 75 (38)
Лучшие ответы: 8
Выделение несвязного текста цветом / VBA

Можно в окне "Границы и заливка" указать применить к "абзацу", можно и кодом:
Код Visual Basic
1
Selection.ParagraphFormat.Shading.BackgroundPatternColor = wdColorAutomatic
03.05.2011, 18:56
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Выделение текста цветом
У меня есть текст с ссылкой (сообщение из твитера. Что-то наподобие "Тут новость бла бла бла http:\\t.co\dsds"). У меня есть индекс начала и конца ссылки. Каким образом мне поменять цвет ссылки на синий например? Либо же, как сделать из нее URL, по которому можно будет перейти?
Программирование Android dan41k 27.03.2014 16:09
Выделение цветом текста
Прошу помочь... Есть textBox в него загружается файл txt, нужно найти все вхождения TIP и окрасить в синий цвет...
C# для начинающих Jo-Ni-K 12.02.2014 15:36
Выделение текста другим цветом
По нажатию произвольной клавиши поочередно выделяет каждое слово текста. Как выполнить эту задачу? Я начал писать прогу по выводу текста на дисплей из потока, но не пойму, как запрограммировать выдиление #include<iostream> #include<stdio.h> #include <fstream> #include <conio.h>...
С++ для начинающих Jokster 31.03.2013 20:12
Выделение цветом текста в ячейке
Есть таблица в Excel, в каждой ячейке содержится название и описание какой-либо операции. Необходимо найти ключевые слова в ячейке и выделить их красным цветом, именно одно слово в ячейке с текстом, а не всю ячейку. Никак не получается это сделать... Пример: В ячеке содержится текст...
VBA Lara 13.08.2009 13:39
Выделение текста разным цветом в RichTextBox
Написал функцию, входными параметрами которой является строка, которая должна быть добавлена в RichTextBox и булевый параметр, от которого зависит, в красный или синий цвет будет окрашиваться текст, функция выглядт так: public void addRes(string _res, bool positive) { ...
C# Windows Forms Pesick 13.05.2009 03:12
Опции темы

Текущее время: 13:31. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.