С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
1

Выделить часть текста цветом в ячейке по шаблону на всем листе(не пустые ячейки)

17.05.2016, 19:06. Показов 5995. Ответов 9

Author24 — интернет-сервис помощи студентам
Всем доброго вечера.
Есть интересная задача. Нужно выделить часть текста в ячейке которая запрашивается у пользователя.
Как себе это вижу я:
1) спрашиваем шаблон у юзера
2) присваиваем переменной и считаем длину (дальше пригодится)
3)цикл поиска на присутствие в ячейках шаблона(не в пустых ячейках)
4)считаем какой по счету символ начинается шаблон в найденой ячейке
5)дальше выполняем окрашивание в цвет(красный) (это есть в макрорекодере)
1
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.05.2016, 19:06
Ответы с готовыми решениями:

Перенести данные из одной ячейки в другую по шаблону и очистить пустые строки
Всем привет! Помогите, пожалуйста, начинающему. Считаю задача не трудная, но мне пока не под силу....

Поиск на 1 листе текста со 2-й ячейки 6 столбца со сравнением на 2-листе со 2-й ячейки 6 столбца
Прошу помочь Макрос поиска на 1-ом листе текста со 2-й ячейки 6 столбца с сравнением его на 2-листе...

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

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

9
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
17.05.2016, 19:30 2
Цитата Сообщение от blackeangel Посмотреть сообщение
В макрорекодере
(если я не путаю с Word’овским) есть и поиск с окрашиванием!
Цитата Сообщение от Казанский Посмотреть сообщение
- Вы не можете включить запись макроса?
- Вы не можете посмотреть записанный макрос?
0
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
17.05.2016, 20:19  [ТС] 3
Sasha_Smirnov, он закрашивает ячейку целиком. Макрорекодер не пишет циклы.
1
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
17.05.2016, 22:09  [ТС] 4
Пример
Вложения
Тип файла: xls Лист Microsoft Excel.xls (57.0 Кб, 6 просмотров)
0
45 / 45 / 15
Регистрация: 14.04.2016
Сообщений: 128
17.05.2016, 23:38 5
Лучший ответ Сообщение было отмечено Sasha_Smirnov как решение

Решение

Как-то так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub tt()
    Dim arr(), Rng As Range, i As Long, j As Long, M As Object
    Set Rng = Selection
    arr = Rng
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = InputBox("Введите шаблон")
        If .Pattern = "" Then Exit Sub
        For i = 1 To UBound(arr)
            If arr(i, 1) <> "" Then
                Set M = .Execute(arr(i, 1))
                If M.Count > 0 Then
                    For j = 0 To M.Count - 1
                        Rng(i).Characters(M(j).firstindex + 1, M(j).Length).Font.Color = vbRed
                    Next
                End If
            End If
        Next
    End With
End Sub
0
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
18.05.2016, 22:10  [ТС] 6
МВТ, не работает при если данные не в первом столбце, а в нескольких (надо что то крутить с UsedRange). И второе замечание - если выделить весь лист - не отрабатывает.
Вложения
Тип файла: xls Лист Microsoft Excel.xls (60.0 Кб, 9 просмотров)
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
19.05.2016, 06:56 7
Немного подкорректировал код МВТ:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub tt()
    Dim arr(), Rng As Range, i As Long, j As Long, M As Object, n&
    Set Rng = Selection
    arr = Rng
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = InputBox("Введите шаблон")
        If .Pattern = "" Then Exit Sub
        For i = 1 To UBound(arr)
            For n = 1 To UBound(arr, 2)
                If Not IsEmpty(arr(i, n)) Then
                    Set M = .Execute(arr(i, n))
                    If M.Count > 0 Then
                        For j = 0 To M.Count - 1
                            Rng.Cells(i, n).Characters(M(j).firstindex + 1, M(j).Length).Font.Color = vbRed
                        Next
                    End If
                End If
            Next
        Next
    End With
End Sub

Выделяйте любой диапазон...
1
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
19.05.2016, 12:04  [ТС] 8
toiai, а еще один такой момент - ваш код чувствителен к регистру, можно это как то обойти?
0
45 / 45 / 15
Регистрация: 14.04.2016
Сообщений: 128
19.05.2016, 14:10 9
Цитата Сообщение от blackeangel Посмотреть сообщение
ваш код чувствителен к регистру, можно это как то обойти?
Так
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 tt()
    Dim arr(), Rng As Range, i As Long, j As Long, M As Object, n&
    Set Rng = Selection
    arr = Rng
    With CreateObject("VBScript.Regexp")
        .Global = True
        .IgnoreCase = True
        .Pattern = InputBox("Введите шаблон")
        If .Pattern = "" Then Exit Sub
        For i = 1 To UBound(arr)
            For n = 1 To UBound(arr, 2)
                If Not IsEmpty(arr(i, n)) Then
                    Set M = .Execute(arr(i, n))
                    If M.Count > 0 Then
                        For j = 0 To M.Count - 1
                            Rng.Cells(i, n).Characters(M(j).firstindex + 1, M(j).Length).Font.Color = vbRed
                        Next
                    End If
                End If
            Next
        Next
    End With
End Sub
0
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
19.05.2016, 15:30  [ТС] 10
МВТ,
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
Sub color()
    Dim arr(), Rng As Range, i As Long, j As Long, M As Object, n&
    Set Rng = ActiveSheet.UsedRange
    arr = Rng
    sFontColorAsk = InputBox("Введите один из цветов: " _
    & Chr(13) & "черный, красный, зеленый, желтый," _
    & Chr(13) & "синий, пурпурный, циан, белый")
    If sFontColorAsk = "черный" Or sFontColorAsk = "Черный" Then sFontColor = vbBlack
    If sFontColorAsk = "красный" Or sFontColorAsk = "Красный" Then sFontColor = vbRed
    If sFontColorAsk = "зеленый" Or sFontColorAsk = "Зеленый" Then sFontColor = vbGreen
    If sFontColorAsk = "желтый" Or sFontColorAsk = "Желтый" Then sFontColor = vbYellow
    If sFontColorAsk = "синий" Or sFontColorAsk = "Синий" Then sFontColor = vbBlue
    If sFontColorAsk = "пурпурный" Or sFontColorAsk = "Пурпурный" Then sFontColor = vbMagenta
    If sFontColorAsk = "циан" Or sFontColorAsk = "Циан" Then sFontColor = vbCyan
    If sFontColorAsk = "белый" Or sFontColorAsk = "Белый" Then sFontColor = vbWhite
    With CreateObject("VBScript.Regexp")
        .Global = True
        .IgnoreCase = True
        .Pattern = InputBox("Введите что окрасить")
        If .Pattern = "" Then Exit Sub
        For i = 1 To UBound(arr)
            For n = 1 To UBound(arr, 2)
                If Not IsEmpty(arr(i, n)) Then
                    Set M = .Execute(arr(i, n))
                    If M.Count > 0 Then
                        For j = 0 To M.Count - 1
                            Rng.Cells(i, n).Characters(M(j).firstindex + 1, M(j).Length).Font.Color = sFontColor 'vbRed
                        Next
                    End If
                End If
            Next
        Next
    End With
End Sub
Добавлено через 49 секунд
Это с запросом цвета. Если есть попроще метод то это интересно.
0
19.05.2016, 15:30
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.05.2016, 15:30
Помогаю со студенческими работами здесь

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

Выделить цветом повторяющие ячейки
Здравствуйте уважаемые форумчане, VBA знаю как &quot;бывалый&quot;, появилась по одной рабочей таблице...

В ячейке таблицы Ворда последние три знака выделить жёлтым цветом
Здравствуйте, по сабжу, как??...

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

Выделить цветом определённую часть фигуры
Добрый день. Ребят, помогите пожалуйста. У меня курсовая, нужно разработать прогу по построению...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Администрирован­­­ие Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru