Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 26.09.2010
Сообщений: 13

Каждое слово - новым цветом

16.10.2010, 14:27. Показов 4538. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, создать макрос, который будет выделять каждое слово текста каким-то новым цветом. Например, первое слово - красный, второе - желтый, третье - синий и т.д.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.10.2010, 14:27
Ответы с готовыми решениями:

Выделить каждое третье слово жёлтым цветом (при повторном нажатии выполненное действие должно отмениться)
написал примерно для выделения, но не пойму, как отменить при повторном нажатии(help): Private Sub CommandButton1_Click() Set Content =...

В символьной строке каждое слово НН заменить на слово Нижний Новгород и полученную строку вывести на экран
В символьной строке каждое слово НН заменить на слово Нижний Новгород и полученную строку вывести на экран использовать функцию Mid

Вставить мягкий перенос в каждое третье слово
Помогите пожалуйста! Нужен макрос для вставки мягкого переноса в каждое третье слово текста. Причем желательно чтобы перенос в слове был...

14
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
16.10.2010, 14:34
griff-on,
а какую тему проходили, что задали такую задачу. Выложи материал или фотографии лекций.
0
0 / 0 / 0
Регистрация: 26.09.2010
Сообщений: 13
16.10.2010, 14:40  [ТС]
Вот макрос, который мы делали на паре

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub myMacros()
'
'  myMacros
'
'
    Dim a As String
    a = "Some text "
    MsgBox a
    Selection.WholeStory
    Selection.Font.Name = "Times New Roman"
    Selection.Font.Size = 14
    Selection.ParagraphFormat.LineSpacing = LinesToPoints(1.5)
    Selection.Font.Italic = wdToggle
    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
    Selection.Font.Bold = wdToggle
    
    
    
End Sub
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
16.10.2010, 15:08
griff-on,
нужен цвет шрифта или выделение цветом?
Вот если надо менять цвет шрифта:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub m_1()
Dim oWord As Range
For Each oWord In ActiveDocument.Range.Words
    oWord.Font.Color = Color
Next
End Sub
Function Color() As Long
Randomize
Dim R As Long
Dim G As Long
Dim B As Long
 
R = Int(255 * Rnd) + 1
G = Int(255 * Rnd) + 1
B = Int(255 * Rnd) + 1
 
Color = RGB(R, G, B)
End Function
Как видишь большая разница между тем, что вы проходили на уроке, и тем, что я выложил.
1
0 / 0 / 0
Регистрация: 26.09.2010
Сообщений: 13
16.10.2010, 15:22  [ТС]
Busine2009, спасибо, конечно, за помощь, но мы такого ещё не знаем, не разбирали. Это препод загнул с заданием)
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
16.10.2010, 15:28
griff-on,
вот этот цикл по-любому нужен:
Visual Basic
1
2
3
4
5
6
Sub m_1()
Dim oWord As Range
For Each oWord In ActiveDocument.Range.Words
    oWord.Font.Color = Color
Next
End Sub
А дальше может быть что-нибудь др, наверное.
В твоём коде ничего даже близкого нет к выполнению поставленной вам задачи.
1
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
17.10.2010, 01:17
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Sub FunnyText()
'раскрашивает слова (не содержащие дефиса) в 6 цветов (один из них родной - wdColorAutomatic)
 
Selection.HomeKey wdStory 'соответсвует нажатию Ctrl-Home (курсор - в начало текста)
Randomize 'инициализация генератора случайных чисел (не обязательно)
 
Do
    With Selection.Find
        .Text = "<*>"                               'слово (без дефисов)
        .Format = True                              'применяем к слову формат
        .MatchWildcards = True                      'подстановочные знаки (см. по Ctrl-F)
        .Replacement.Font.Color = _
        Choose(1 + Int(6 * Rnd), _
        wdColorAutomatic, wdColorBrown, wdColorGold, _
        wdColorGray20, wdColorGreen, wdColorIndigo) 'случайный цвет шрифта (из 6 вариантов ряда WdColor)
        .Execute Replace:=wdReplaceOne              'заменяем цвет шрифта на выделении (здесь - на слове)
    End With
    Selection.Collapse Direction:=wdCollapseEnd     'переход к концу выделенного (слова)
    
Loop Until Selection.Find.Found = False             'ВЫХОД из цикла - когда поиск нашёл всё
 
'Exit Sub
    
'Теперь сбросим параметры окна поиска-замены (не обязательно, но так как-то приличнее.)'
    With Selection.Find
        .Text = ""
        .Replacement.ClearFormatting
        .MatchWildcards = False
        .MatchCase = False
        .Execute
    End With
 
End Sub
Только тут я пока не каждое — новым цветом: могут быть повторы. Но скелет проги готов!
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
17.10.2010, 10:11
Sasha_Smirnov,
ты в своей лаборатории не нашёл, как с помощью Find найти пустой абзац? Т.е. абзац состоящий только из знака абзаца?
Помнится давно обсуждался этот вопрос. Может сдвиги есть?
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
18.10.2010, 18:50
Для иллюстрации привожу кусок файла, обработанный вышеприведённым кодом.

По идее травки-цветочкикто-то, где-то) должны бы красится в один цвет, но...
Миниатюры
Каждое слово - новым цветом  
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
18.10.2010, 19:07
помоему если цикл проходить по словам, то пустой абзац в цикл не попадёт
А если цикл проходить по знакам тогда и найдётё
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
20.10.2010, 11:23
Ну вот так уже ближе. Осталось как-то «окучить» 1-буквенные слова.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub Rainbow() 'раскрашивает слова (в том числе и с дефисным написанием!) в 7 цветов
Static NomerSlova
 
Do
NomerSlova = 1 + NomerSlova Mod 7               'число от 1 до 7
 
    With Selection.Find
    .Text = "[! ]{2;}"                          'слово (из двух букв и длиннее)
    .MatchWildcards = True                      'подстановочные знаки - см. окно по Ctrl-h (в Word)
    .Replacement.Font.Color = Choose(NomerSlova, _
    wdColorRed, wdColorOrange, wdColorYellow, wdColorGreen, wdColorBlue, _
    wdColorDarkBlue, wdColorViolet)             'случайный цвет шрифта (из 7 вариантов ряда WdColor)
    .Execute Replace:=wdReplaceOne              'заменяем цвет шрифта на выделении (здесь - на слове)
    End With
    
    Selection.Collapse Direction:=wdCollapseEnd 'переход к концу выделенного (слова)
    
Loop Until Selection.Find.Found = False         'ВЫХОД из цикла - когда поиск нашёл всё
 
 
'Теперь сбросим (изменённые нами) параметры окна поиска-замены.'
    With Selection.Find
        .Text = ""
        .Replacement.ClearFormatting
        .MatchWildcards = False
        .Execute
    End With
 
Selection.HomeKey wdStory 'соответсТвует нажатию Ctrl-Home (курсор - в начало текста)
End Sub
(На иллюстрации этот же код, раскрашенный при его выполнении в ворде.)
Миниатюры
Каждое слово - новым цветом  
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
20.10.2010, 11:29
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
По идее травки-цветочки (и кто-то, где-то) должны бы красится в один цвет, но...
в Word "кто-то" - это 3 слова.
Word вообще недоделанная программа. Надо было наш Лексикон развивать.
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
21.10.2010, 01:43
Перенедоделанная!.. Но в моём-то решении «кто-то» — это 1! слово.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
21.10.2010, 10:51
Sasha_Smirnov,
хотя инструмент "Статистика" показывает, что "что-то" одно слово.
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
05.11.2010, 17:59
Да, он считает как-то так:
Selection.Find.Text = "[! ]{1;}", а соответствующий
Visual Basic
1
Wcount = Selection.Range.ComputeStatistics(wdStatisticWords)
(где Wcount — количество слов в документе, измеренное сим инструментом).

Уже и применил успешно: Поменять выделенные слова в одной строке местами
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.11.2010, 17:59
Помогаю со студенческими работами здесь

Написать программу которая нумерует каждое слово в абзаце
Нужно написать программу которая нумерует каждое слово в абзаце , и с каждым новым абзацем начинает нумеровать по новому.... К сожалению...

Каждое слово предложения вывести с новой строки в листбокс
Дано предложение, каждое слово предложения вывести с новой строки в листбокс

В выделенном тексте каждое четное слово поменять местами с нечетным
вообще полный ноль в макросах(ну разве что на запись могу поставить,а вручную тексты набирать нооль) Вообщем сама задача:В выделенном...

Из ComboBox-а вытащить 3 слова, и вставить каждое слово в отдельное текстовое поле
из комбобокса нужно вытащить 3 слова и вставить каждое слово в отдельное текстовое поле. то есть..у меня выводиться в комбо ФИО..мне нужно...

Каждое второе слово выделенного текста напечатать полужирным шрифтом, а остальные слова подчеркнуть
Помогите,пожалуйста!не понимаю макросы :( Написать макрос (допустим, MyMacros), который проделывает зависящую от варианта манипуляцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru