Получается так, что при запуске макроса, выделяется только одно слово, потом при повторном запуске макроса, снова выделяется только ОДНО слово.
Подскажите, как выделить полужирным НЕСКОЛЬКО слов сразу: "Ответы", "Вопросы", "Для того"
Заранее благодарен!
Сам код:
[vba]
Код
Option Compare Text Sub Find_n_Highlight() On Error Resume Next: Err.Clear Dim ra As Range, cell As Range, res, txt$, v, pos& res = InputBox("Введите текст, который необходимо подсветить в таблице", "Поиск и подсветка текста", "диз") If VarType(res) = vbBoolean Then Exit Sub ' нажата кнопка ОТМЕНА txt$ = Trim(res): If Len(txt) = 0 Then Exit Sub ' текст не введен, или состоит из пробелов
Set ra = Range([A2], Range("DA" & Rows.Count).End(xlUp)) ' диапазон для поиска Application.ScreenUpdating = False ra.Font.Color = 0: ra.Font.Bold = 0 ' сброс цветового выделения
For Each cell In ra.Cells ' перебираем все ячейки pos = 1 If cell.Text Like "*" & txt & "*" Then arr = Split(cell.Text, txt, , vbTextCompare) ' разбивает текст ячейки на части If UBound(arr) > 0 Then ' если подстрока найдена For Each v In arr ' перебираем все вхождения pos = pos + Len(v) ' начальная позиция With cell.Characters(pos, Len(txt))
.Font.Bold = True ' и полужирным начертанием End With pos = pos + Len(txt) Next v End If End If Next cell End Sub
[/vba]
Уважаемые коллеги, подскажите:
Получается так, что при запуске макроса, выделяется только одно слово, потом при повторном запуске макроса, снова выделяется только ОДНО слово.
Подскажите, как выделить полужирным НЕСКОЛЬКО слов сразу: "Ответы", "Вопросы", "Для того"
Заранее благодарен!
Сам код:
[vba]
Код
Option Compare Text Sub Find_n_Highlight() On Error Resume Next: Err.Clear Dim ra As Range, cell As Range, res, txt$, v, pos& res = InputBox("Введите текст, который необходимо подсветить в таблице", "Поиск и подсветка текста", "диз") If VarType(res) = vbBoolean Then Exit Sub ' нажата кнопка ОТМЕНА txt$ = Trim(res): If Len(txt) = 0 Then Exit Sub ' текст не введен, или состоит из пробелов
Set ra = Range([A2], Range("DA" & Rows.Count).End(xlUp)) ' диапазон для поиска Application.ScreenUpdating = False ra.Font.Color = 0: ra.Font.Bold = 0 ' сброс цветового выделения
For Each cell In ra.Cells ' перебираем все ячейки pos = 1 If cell.Text Like "*" & txt & "*" Then arr = Split(cell.Text, txt, , vbTextCompare) ' разбивает текст ячейки на части If UBound(arr) > 0 Then ' если подстрока найдена For Each v In arr ' перебираем все вхождения pos = pos + Len(v) ' начальная позиция With cell.Characters(pos, Len(txt))
.Font.Bold = True ' и полужирным начертанием End With pos = pos + Len(txt) Next v End If End If Next cell End Sub
Макрос не все заданные значения отрабатывает, необходимо так:
ФИО: Иванов Иван Иванович. Контактный телефон: 1-1-1-1-1. Клуб: улица и дом. Время инцидента: последние время. Благодарность: результативный Имя и приметы: не указаны.
А получается так:
ФИО: Иванов Иван Иванович. Контактный телефон: 1-1-1-1-1. Клуб: улица и дом. Время инцидента: последние время. Благодарность: результативный Имя и приметы: не указаны.
[vba]
Код
Option Compare Text
Sub Find_n_Highlight() On Error Resume Next: Err.Clear Dim ra As Range, cell As Range, res, txt$, v, pos&, arFind, f res = InputBox("Введите текст, который необходимо подсветить в таблице", "Поиск и подсветка текста", "ФИО:, контактный телефон:, клуб:, Время инцидента:, имя и приметы") If VarType(res) = vbBoolean Then Exit Sub ' нажата кнопка ОТМЕНА txt$ = Trim(res): If Len(txt) = 0 Then Exit Sub ' текст не введен, или состоит из пробелов Application.ScreenUpdating = False Set ra = Range(["A1:A500"], Range("A" & Rows.Count).End(xlUp)) ' диапазон для поиска ra.Font.Color = 0: ra.Font.Bold = 0 ' сброс цветового выделения arFind = Split(txt, ",") For Each f In arFind For Each cell In ra ' перебираем все ячейки pos = 1 If cell.Text Like "*" & f & "*" Then arr = Split(cell.Text, f, , vbTextCompare) ' разбивает текст ячейки на части If UBound(arr) > 0 Then ' если подстрока найдена For Each v In arr ' перебираем все вхождения pos = pos + Len(v) ' начальная позиция With cell.Characters(pos, Len(f))
.Font.Bold = True ' и полужирным начертанием End With pos = pos + Len(f) Next v End If End If Next cell Next f End Sub
[/vba]
Макрос не все заданные значения отрабатывает, необходимо так:
ФИО: Иванов Иван Иванович. Контактный телефон: 1-1-1-1-1. Клуб: улица и дом. Время инцидента: последние время. Благодарность: результативный Имя и приметы: не указаны.
А получается так:
ФИО: Иванов Иван Иванович. Контактный телефон: 1-1-1-1-1. Клуб: улица и дом. Время инцидента: последние время. Благодарность: результативный Имя и приметы: не указаны.
[vba]
Код
Option Compare Text
Sub Find_n_Highlight() On Error Resume Next: Err.Clear Dim ra As Range, cell As Range, res, txt$, v, pos&, arFind, f res = InputBox("Введите текст, который необходимо подсветить в таблице", "Поиск и подсветка текста", "ФИО:, контактный телефон:, клуб:, Время инцидента:, имя и приметы") If VarType(res) = vbBoolean Then Exit Sub ' нажата кнопка ОТМЕНА txt$ = Trim(res): If Len(txt) = 0 Then Exit Sub ' текст не введен, или состоит из пробелов Application.ScreenUpdating = False Set ra = Range(["A1:A500"], Range("A" & Rows.Count).End(xlUp)) ' диапазон для поиска ra.Font.Color = 0: ra.Font.Bold = 0 ' сброс цветового выделения arFind = Split(txt, ",") For Each f In arFind For Each cell In ra ' перебираем все ячейки pos = 1 If cell.Text Like "*" & f & "*" Then arr = Split(cell.Text, f, , vbTextCompare) ' разбивает текст ячейки на части If UBound(arr) > 0 Then ' если подстрока найдена For Each v In arr ' перебираем все вхождения pos = pos + Len(v) ' начальная позиция With cell.Characters(pos, Len(f))
.Font.Bold = True ' и полужирным начертанием End With pos = pos + Len(f) Next v End If End If Next cell Next f End Sub
Один момент остаётся не решённым, возможно Вы также подскажите, как скорректировать код, когда действуют правила условного форматирования - код не работает (т.е. он работает. но не происходят изменения)
Один момент остаётся не решённым, возможно Вы также подскажите, как скорректировать код, когда действуют правила условного форматирования - код не работает (т.е. он работает. но не происходят изменения)evgenyforever
Если всё равно макрос работает, делайте заливку тоже макросом. Если не разберётесь, создавайте новую тему, т.к. этот вопрос уже к данной теме не относится
Если всё равно макрос работает, делайте заливку тоже макросом. Если не разберётесь, создавайте новую тему, т.к. этот вопрос уже к данной теме не относитсяPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
RAN, Pelena, Код работает - это самое главное, но дело в том, что таблица с УФ может быть достаточно ёмкой и каждый день может быть до 100 таких строк (это некий отчёт, который ежедневно обновляется), поэтому каждый раз приходится выделять эти значения в ручную, это затягивает процесс. УФ должно быть, того требуют стандарты. Есть ли всё же смысл в создании новой темы, реально ли написать такой код, чтобы он работал вместе с УФ?
RAN, Pelena, Код работает - это самое главное, но дело в том, что таблица с УФ может быть достаточно ёмкой и каждый день может быть до 100 таких строк (это некий отчёт, который ежедневно обновляется), поэтому каждый раз приходится выделять эти значения в ручную, это затягивает процесс. УФ должно быть, того требуют стандарты. Есть ли всё же смысл в создании новой темы, реально ли написать такой код, чтобы он работал вместе с УФ?evgenyforever
Вы читать не умеете? Или читаете только то, что хотите? Я же вроде ясно написал, что макрос работает (хочь с УФ, хочь без УФ), а полученное форматирование убивается УФ.
Вы читать не умеете? Или читаете только то, что хотите? Я же вроде ясно написал, что макрос работает (хочь с УФ, хочь без УФ), а полученное форматирование убивается УФ.RAN