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

Выделить шрифт в ячейке нужным цветом, согласно определенному условию

08.01.2011, 14:25. Показов 6290. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать чтобы в ячейке шрифт выделялся нужным цветом согласно определенному условию.
Пример:
Допустим есть диапазон ячек А1:A300 в которых значения меняются, если А1=Текст1 то B1
должно стать красным, если А1=Текст2 то B1 зеленым цветом, если A1=Текст3 то B1 желтым,
если A1=Текст4 то B1 белым, если A1=Текст5 то B1 черным.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.01.2011, 14:25
Ответы с готовыми решениями:

По значению в ячейке выделить определённым цветом ячейку
Если количество символов в ячейке больше 15, то выделить цветом эту ячейку без макросов.

По значению в ячейке выделить определённым цветом всю строку
Добрый вечер! Ну, пожалуйста, необходим макрос: В определённом столбце(R) если значение в ячейке от 0 до 30, то вся строка выделяется...

В ячейке таблицы Ворда последние три знака выделить жёлтым цветом
Здравствуйте, по сабжу, как?? ActiveDocument.Tables(1).Rows(1).Cells(1).Range.......HighlightColorIndex = wdYellow Добавлено через 6...

15
90 / 37 / 14
Регистрация: 03.11.2010
Сообщений: 429
08.01.2011, 16:52
Воспользуйся условным форматированием.
Формат->Условное форматирование.
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 36
08.01.2011, 17:49  [ТС]
Нет условное форматирование не подходит, во первых там только 3 условия а мне нужно 5 и есть еще кое какие ньюансы.
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 36
08.01.2011, 17:49  [ТС]
Нет условное форматирование не подходит, во первых там только 3 условия а мне нужно 5 и есть еще кое какие ньюансы.
0
90 / 37 / 14
Регистрация: 03.11.2010
Сообщений: 429
08.01.2011, 20:44
Попробуй так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
Select Case Target.Value
Case 'Попса': Target.Font.ColorIndex = 5
...          
...
...
...
Case 'Эстрада': Target.Font.ColorIndex = 45
End Select
End If
End Sub
это изменит цвет при вводе значения в ячейку.
Если таблица уже есть сделай цикл по ячейкам:
Visual Basic
1
ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1
0
90 / 37 / 14
Регистрация: 03.11.2010
Сообщений: 429
08.01.2011, 20:47
или вставь:
Visual Basic
1
2
3
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1
End Sub
Нажми стрелку вниз и поехали...
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 36
09.01.2011, 10:31  [ТС]
У меня в листе в который я вставляю данный код уже есть код
другого макроса этот я вставляю ниже того который есть и при вводе слова 'Попса' выдается ошибка:
Compile Error:
Ambiguous name detected: Worksheet_Change

А если удалить макрос который находится выше то этот работает номально, как сделать чтобы эти 2 макроса уживались на одном листе?
0
90 / 37 / 14
Регистрация: 03.11.2010
Сообщений: 429
09.01.2011, 16:57
Конечно на одном листе не могут быть два макроса с одним именем.
По этому вставь тело макроса в уже существующий:
Private Sub Worksheet_Change(ByVal Target As Range)
лутше в самый конец.
Могут быть и другие нестыковки, но для этого их надо посмотреть.
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 36
09.01.2011, 19:52  [ТС]
Как сделать чтобы эти макросы ужились на одном листе:

Макрос 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
31
32
33
34
35
36
37
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 
'***********************************************
' help urllink-doggie-yandex.ru
'***********************************************
 
On Error GoTo Err
 
iClm = Target.Column: iRow = Target.Row
 
iDate = Target.Value
 
If iClm = 3 And iRow > 7 And iRow < 301 Then
 
Select Case iDate
Case '1'
iDate = Worksheets('Параметры').Range('E3').Value
Case '2'
iDate = 'Кидалов и сыновья'
Case '3'
iDate = 'ООО Торговый Дом Шелупонь'
Case '4'
Rem : И так далее ...
 
End Select
 
Application.EnableEvents = False
 
Application.Undo
 
Target.Value = iDate
 
Application.EnableEvents = True
 
End If
 
Err: End Sub
Макрос 2:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
Select Case Target.Value
Case 'Попса': Target.Font.ColorIndex = 5
... 
...
...
...
Case 'Эстрада': Target.Font.ColorIndex = 45
End Select
End If
End Sub
0
90 / 37 / 14
Регистрация: 03.11.2010
Сообщений: 429
09.01.2011, 22:09
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
34
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error GoTo Err
 
iClm = Target.Column: iRow = Target.Row
iDate = Target.Value
 
If iClm = 3 And iRow > 7 And iRow < 301 Then
 
Select Case iDate
Case '1':iDate = Worksheets('Параметры').Range('E3').Value
Case '2':iDate = 'Кидалов и сыновья'
Case '3':iDate = 'ООО Торговый Дом Шелупонь'
Case '4'
Rem : И так далее ...
End Select
 
Application.EnableEvents = False
Application.Undo
Target.Value = iDate
Application.EnableEvents = True
End If
 
If Target.Count = 1 Then
Select Case iDate
Case 'Попса': Target.Font.ColorIndex = 5
'... 
'...
'...
'...
Case 'Эстрада': Target.Font.ColorIndex = 45
End Select
End If
 
Err: End Sub
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 36
09.01.2011, 23:42  [ТС]
Спасибо все работает. Только вот еще один вопрос где можно посмотреть ColorIndex какой цвет какой цифре соответствует.
0
22 / 5 / 1
Регистрация: 05.09.2010
Сообщений: 370
10.01.2011, 08:26
Воспользуйся Макрорекордером.
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
11.01.2011, 04:24
А лучше посмотреть в справочной системе сразу все 56 color.
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 36
11.01.2011, 22:08  [ТС]
Этот код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
Select Case Target.Value
Case 'Попса': Target.Font.ColorIndex = 5
... 
...
...
...
Case 'Эстрада': Target.Font.ColorIndex = 45
End Select
End If
Заменяет на всем листе, слова нужным цветом, а можно чтобы изменялись слова только в одном столбце 'N'?
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
12.01.2011, 03:50
Посмотрите код в первоначальном макросе, там где Вам нужно было совершать замену чисел на данные из другой ячейки.
Насколько я помню, там стояло ограничение на диапазон ячеек 'A20:A300'
Если убрать ограничения на строки, то останется только столбец 'A'
P.S. Глядя на Ваши мучения и метания по разным форумам, могу сказать одно : Вам нужно точно для себя определить, что именно Вам нужно и только после этого приступать к решению этой задачи. В противном случае мы получаем вариант, когда ответ на один вопрос нестыкуется с другим.
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 36
12.01.2011, 22:14  [ТС]
Почему я определился мне нужно:

1. Чтобы макрос заменял числа на данные
2. Чтобы некоторые слова выделялись нужным цветом.
3. Желательно создать собственное меню.

Все последовательно и состыковывается. Большое спасибо всем кто помогал и помогает мне, а отдельное спасибо тебе pashulka.

P.S. А в макрос нужно вставить эту строку:
Visual Basic
1
If iClm = 1 And iRow >19 And iRow < 301 Then
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.01.2011, 22:14
Помогаю со студенческими работами здесь

Если количество символов в ячейке меньше чем нужно, выделить ее цветом
Подскажите, как с помощью VBA-макроса (excel) выделить цветом ячейку, если количество символов в ней меньше, чем нужно? Для примера -...

Выделить часть текста цветом в ячейке по шаблону на всем листе(не пустые ячейки)
Всем доброго вечера. Есть интересная задача. Нужно выделить часть текста в ячейке которая запрашивается у пользователя. Как себе это...

Выделить цветом строки/текст в гриде по условию
Приветствую. Такая задача. На форме имеется кнопка, по нажатию на неё открывается форма с гридом в котором выведены записи людей, у...

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

Как залить pictureBox нужным цветом?
Напишите пожалуйста код, для того, что бы очистить или залить нужным цветом picturebox.


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru