Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 15.03.2019
Сообщений: 189
Excel

Если в ячейке есть слово "Услуга", то в данной ячейке текст выделять жирным

07.03.2023, 10:02. Показов 1592. Ответов 9

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста. Нужно написать если на протяжение всей таблицы если в ячейке есть слово Услуга. То в данной ячейке текст выделять жирным
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  ResRow = 3
      While ResultSheet.Cells(ResRow, 1) <> Empty
    
        
            Set fcell = ResultSheet.Cells(ResRow, pb).Find("Услуга")
            If ResultSheet.Cells(ResRow, pb) <> Empty And Not fcell Is Nothing Then
  
                ResultSheet.Cells(ResRow, (pb)).Font.Bold = True
   
            Else
   
                ResultSheet.Cells(ResRow, (pb)).Font.Bold = False
            End If
       
    pb = pb + 1
    ResRow = ResRow + 1
    Wend
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2023, 10:02
Ответы с готовыми решениями:

Если в ячейке есть определенная фраза то в другой ячейке этой строки должно быть слово VBA
Добрый день! Прошу помощи написать код VBA для следующей задачи. Имеется таблица, где столбец &quot;М&quot; заполняется различными...

Подправить макрос по замене текста в ячейке, если в другой ячейке определенный текст
Всем привет. Имеется макрос, который из определенной папки открывает файлы dbf, и обрабатывает в необходимый формат. В нем есть пункт,...

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

9
932 / 365 / 43
Регистрация: 10.05.2021
Сообщений: 1,564
Записей в блоге: 10
07.03.2023, 10:08
anton24,
Для выделенного диапазона из одной области и более одной ячейки. Нет проверки на ячейки с ошибками. Регистр имеет значение («услуга» не отметит)
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
Sub Test()
Dim rng As Range, gr As Range
Dim arr, r&, c&
 
Set rng = Selection
'Set rng = Worksheets("ИмяЛиста").Range("A1:D1000") ' тут пример, как можно задать другой диапазон
 
arr = rng.Value2
 
For c = 1 To UBound(arr, 2)
    For r = 1 To UBound(arr, 1)
        If InStr(arr(r, c), "Услуга") Then
            If gr Is Nothing Then
                Set gr = rng.Cells(r, c)
            Else
                Set gr = Union(gr, rng.Cells(r, c))
            End If
        End If
    Next r
Next c
 
If Not gr Is Nothing Then gr.Font.Bold = True
End Sub
0
 Аватар для Angry Old Man
3005 / 745 / 313
Регистрация: 26.03.2022
Сообщений: 1,394
Записей в блоге: 1
07.03.2023, 16:29
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub anton24()
 
Const KeyWord As String = "Услуга"
Dim WS As Worksheet: Set WS = Worksheets("тестовый лист")
Dim Rall As Range
Dim sKey As String: sKey = LCase(KeyWord)
 
Application.ScreenUpdating = False
 
With WS
    Set Rall = .Range("A1").CurrentRegion
    Rall.Font.Bold = False
    For Each R In Rall
        If InStr(1, LCase(R), sKey) <> 0 Then R.Font.Bold = True
    Next
End With
Application.ScreenUpdating = True
 
End Sub
1
665 / 334 / 135
Регистрация: 16.07.2020
Сообщений: 956
07.03.2023, 18:41
anton24, вообще то это типичная задача для условного форматирования, но без вашего примера это игра в угадайку.
2
932 / 365 / 43
Регистрация: 10.05.2021
Сообщений: 1,564
Записей в блоге: 10
07.03.2023, 18:49
Angry Old Man, если что, у InStr есть 4ый параметр (в таком случае, нужно указывать первый — с какого символа искать), который игнорирует регистр.
Будет быстрее и короче

Цитата Сообщение от AlexOld Посмотреть сообщение
типичная задача для условного форматирования
функции НАЙТИ или ПОИСК (в зависимости от учёта регистра)
1
 Аватар для Angry Old Man
3005 / 745 / 313
Регистрация: 26.03.2022
Сообщений: 1,394
Записей в блоге: 1
07.03.2023, 19:25
Jack Famous,
С учетом Вашего замечания
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub anton24_2()
 
Const KeyWord As String = "Услуга"
Dim WS As Worksheet: Set WS = Worksheets("тестовый лист")
Dim Rall As Range
 
Application.ScreenUpdating = False
 
With WS
    Set Rall = .Range("A1").CurrentRegion
    Rall.Font.Bold = False
    For Each R In Rall
        If InStr(1, R, KeyWord, vbTextCompare) <> 0 Then R.Font.Bold = True
    Next
End With
Application.ScreenUpdating = True
 
End Sub
Но мне показалось, что этот вариант медленнее.
1
932 / 365 / 43
Регистрация: 10.05.2021
Сообщений: 1,564
Записей в блоге: 10
09.03.2023, 10:06
Цитата Сообщение от Angry Old Man Посмотреть сообщение
мне показалось, что этот вариант медленнее
Вы правы. Проверил и удивился
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Sub t()
Dim s$, t!, n&, i&
Const nCyc& = 10000000
 
s = "васька"
 
t = Timer
    For n = 1 To nCyc
        i = InStr(s, "а")
    Next n
Debug.Print 1, Format$(Timer - t, "0.00"), i    ' 0.19 | 2
 
s = "василий"
 
t = Timer
    For n = 1 To nCyc
        i = InStr(s, "й")
    Next n
Debug.Print 2, Format$(Timer - t, "0.00"), i    ' 0.21 | 7
 
 
s = "василий васильевич василевсКий"
 
t = Timer
    For n = 1 To nCyc
        i = InStr(s, "К")
    Next n
Debug.Print 3, Format$(Timer - t, "0.00"), i    ' 0.27 | 28
 
t = Timer
    For n = 1 To nCyc
        i = InStr(1, s, "к", vbTextCompare)
    Next n
Debug.Print 4, Format$(Timer - t, "0.00"), i    ' 2.50 | 28
 
t = Timer
    For n = 1 To nCyc
        i = InStr(1, s, "К", vbTextCompare)
    Next n
Debug.Print 5, Format$(Timer - t, "0.00"), i    ' 2.57 | 28
 
t = Timer
    For n = 1 To nCyc
        i = InStr(LCase$(s), "к")
    Next n
Debug.Print 6, Format$(Timer - t, "0.00"), i    ' 1.50 | 28
 
 
s = UCase$(s)
 
t = Timer
    For n = 1 To nCyc
        i = InStr(1, s, "к", vbTextCompare)
    Next n
Debug.Print 7, Format$(Timer - t, "0.00"), i    ' 2.48| 28
 
t = Timer
    For n = 1 To nCyc
        i = InStr(1, s, "К", vbTextCompare)
    Next n
Debug.Print 8, Format$(Timer - t, "0.00"), i    ' 2.46 | 28
 
t = Timer
    For n = 1 To nCyc
        i = InStr(LCase$(s), "к")
    Next n
Debug.Print 9, Format$(Timer - t, "0.00"), i    ' 1.50 | 28
 
End Sub
1
 Аватар для Angry Old Man
3005 / 745 / 313
Регистрация: 26.03.2022
Сообщений: 1,394
Записей в блоге: 1
09.03.2023, 15:24
anton24,
Цитата Сообщение от AlexOld Посмотреть сообщение
anton24, вообще то это типичная задача для условного форматирования
Выделяем таблицу --> на ленте "Условное форматирование" --> "Правила выделения ячеек" --> "Текст содержит" " --> "Пользовательский формат" " --> ......
Миниатюры
Если в ячейке есть слово "Услуга", то в данной ячейке текст выделять жирным  
1
 Аватар для Angry Old Man
3005 / 745 / 313
Регистрация: 26.03.2022
Сообщений: 1,394
Записей в блоге: 1
09.03.2023, 20:28
Цитата Сообщение от AlexOld Посмотреть сообщение
вообще то это типичная задача для условного форматирования
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub anton24_3()
 
Const KeyWord As String = "Услуга"
Dim WS As Worksheet: Set WS = Worksheets("тестовый лист3")
 
Application.ScreenUpdating = False
With WS.Range("A1").CurrentRegion
    .FormatConditions.Delete
    .Font.Bold = False
    .FormatConditions.Add Type:=9, String:=KeyWord, TextOperator:=0
    .FormatConditions(1).Font.Bold = True
End With
Application.ScreenUpdating = True
End Sub
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
09.03.2023, 23:26
Вообще конечно какой метод выбрать зависит от задачи и данных - может там 10 строк одного столбца, а может миллион строк с сотней столбцов и в каждой ячейке текста по несколько сотен слов...
Но я думаю если данных много то find будет быстрее. "Услуг" наверняка намного меньше чем заполненных ячеек.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.03.2023, 23:26
Помогаю со студенческими работами здесь

Если в ячейке есть слово то подставить значение
Подскажите формулой ищем в ячейке В1 есть ли слово из списка от I2 до I10, если есть то ставим соответствующее значение из J1-J10, если...

Текст жирным в ячейке StringGrid
Как сделать текст в ячейке StringGrid жирным?

Проверить есть ли уже в ячейке примечание и если есть, то на выбор: либо удалить примечание в ячейке и ввести новое, либо выйти из процедуры.
Есть форма с TextBox'ом txtС и кнопка две кнопки CommandButton1 (Создать) и CommandButton2 (Очистить). В первое поле txtС вводится текст...

Как сделать жирным текст в ячейке StringGrid?
Добрый день! :) Подскажите, как в StringGrid сделать жирным текст в ячейке? Если будут найдены одинаковые строки в первом и втором столбце,...

Как в Excel-ячейке определенный текст сделать жирным?
Не всю ячейку, а выборочный текст Добавлено через 13 минут Нашел Форматирование текста в ячейке Excel


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType и SDL3_ttf из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru