Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2019, 14:14   #1
wsashw
 
Регистрация: 09.09.2019
Сообщений: 7
По умолчанию Макрос не видит формат

Всех приветствую!

Есть небольшой макрос по выделению конкретного текста на странице жирным и красным (во вложении. Можете сохранить себе, мало ли- пригодиться)

У него есть небольшой минус. Если формат ячейки не число и не текст, а какой-то кастомный, то текст в таких ячейках он игнорирует (он, собственно, так и называется- custom. В моём случае формат такой:

_-* #.##0,00_р_._-;-* #.##0,00_р_._-;_-* "-"??_р_._-;_-@_-

Вопрос: как можно изменить макрос (я так полагаю строку "dim") что бы он не смотрел на формат и просто выделял указанный ему текст?

Заранее благодарю и всем хорошего дня!

Код макроса:

Код:
Sub Red()

    On Error Resume Next: Err.Clear
    Dim ra As Range, cell As Range, res, txt$, v, pos&
   

    Set ra = ActiveSheet.UsedRange    ' диапазон для поиска
    Application.ScreenUpdating = False
    ra.Font.Color = 0: ra.Font.Bold = 0  ' сброс цветового выделения

    For Each cell In ra.Cells    ' перебираем все ячейки
        pos = 1
        If cell.Text = "FALSE" Then
                For Each v In arr    ' перебираем все вхождения
                    pos = pos + Len(v)    ' начальная позиция
                    With cell.Characters(pos, Len(txt))
                        .Font.ColorIndex = 3    ' выделяем цветом
                        .Font.Bold = True    ' и полужирным начертанием
                    End With
                    pos = pos + Len(txt)
                Next v
        End If
    Next cell


End Sub
______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ
Вложения
Тип файла: xlsx Macro bold&red1.xlsx (8.5 Кб, 19 просмотров)

Последний раз редактировалось Serge_Bliznykov; 19.09.2019 в 15:25. Причина: Добавление файла
wsashw вне форума Ответить с цитированием
Старый 19.09.2019, 15:32   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

макрос не рабочий.
arr - не задано.

ну и неудивительно.
куда делась строчка
Цитата:
Сообщение от wsashw Посмотреть сообщение
Код:
arr = Split(cell.Text, txt, , vbTextCompare)   ' разбивает текст ячейки на части
?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.09.2019, 16:13   #3
wsashw
 
Регистрация: 09.09.2019
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
макрос не рабочий.
arr - не задано.

ну и неудивительно.
куда делась строчка ?
Макрос рабочий
Только что скопировал указанный код себе, протестировал, всё работает.
про arr не знаю...
К сожалению плохо разбираюсь в макросах, пока. Ибо новичок.
Это написано для офиса 2016, если что.
wsashw вне форума Ответить с цитированием
Старый 19.09.2019, 16:32   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от wsashw Посмотреть сообщение
Только что скопировал указанный код себе, протестировал, всё работает.
ну, у меня не работает.

и, если честно, я не понимаю, как может работать строчка

Цитата:
Сообщение от wsashw Посмотреть сообщение
Код:
For Each v In arr    ' перебираем все вхождения
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.09.2019, 16:55   #5
wsashw
 
Регистрация: 09.09.2019
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, у меня не работает.

и, если честно, я не понимаю, как может работать строчка
Ее можно удалить, она осталась с того изначального макроса, где был MsgBox

Макрос работает для слова "FALSE" (регистр учитывается)

Ищет все "FALSE" на странице и красит их в красный и жирный.

Если вы напишите на странице "FALSE" и запустите макрос, то слово выделится красным и жирным.

Последний раз редактировалось wsashw; 19.09.2019 в 16:56. Причина: черный => жирный
wsashw вне форума Ответить с цитированием
Старый 19.09.2019, 20:55   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Sub Red()
    Dim ra As Range, cell As Range
    Set ra = ActiveSheet.UsedRange    ' диапазон для поиска
    Application.ScreenUpdating = False
    ra.Font.Color = 0: ra.Font.Bold = 0  ' сброс цветового выделения
    For Each cell In ra.Cells    ' перебираем все ячейки
        If LCase(cell.Value2) = "false" Then
            With cell
                .Font.ColorIndex = 3    ' выделяем цветом
                .Font.Bold = True    ' и полужирным начертанием
            End With
        End If
    Next cell
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 23.09.2019, 15:56   #7
wsashw
 
Регистрация: 09.09.2019
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Код:
Sub Red()
    Dim ra As Range, cell As Range
    Set ra = ActiveSheet.UsedRange    ' диапазон для поиска
    Application.ScreenUpdating = False
    ra.Font.Color = 0: ra.Font.Bold = 0  ' сброс цветового выделения
    For Each cell In ra.Cells    ' перебираем все ячейки
        If LCase(cell.Value2) = "false" Then
            With cell
                .Font.ColorIndex = 3    ' выделяем цветом
                .Font.Bold = True    ' и полужирным начертанием
            End With
        End If
    Next cell
End Sub
Спасибо огромное! Все заработало!
вы меня спасли!

Может быть вы сделаете это ещё раз?)

У меня ещё есть такой трабл...

Так как программист из меня, мягко говоря так себе, то я сделал макрос длинной в несколько тысяч строк (в основном record'ом, конечно же). Их получилось ах 6 штук (этот макрос туда тоже входит).

Как это все сократить я, если честно не представляю от слова совсем.

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

Короче можно как-то сделать так, что бы макросы выполнялись подряд с одной кнопки?

UPD: Узнал про supermacro... иногда бесит от собственной тупости, если честно.

Спасибо, в любом случае.

Последний раз редактировалось wsashw; 23.09.2019 в 16:11.
wsashw вне форума Ответить с цитированием
Старый 24.09.2019, 11:44   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от wsashw Посмотреть сообщение
Узнал про supermacro...
- а я не знаю пока... Можно ссылку?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 24.09.2019, 14:02   #9
wsashw
 
Регистрация: 09.09.2019
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
- а я не знаю пока... Можно ссылку?
Да там нет ссылки
Если вам нужно объединить несколько макросов в один, то создаете макрос под названием "supermacro". Получится так:

Код:
Sub supermacro ()
       macro1
       macro2
       macro3
End Sub
Под Macro1, Macro2, Macro3, разумеется, имею в виду названия ваших макросов, которые вы объединяете в один.

он их выполнит в том порядке, в котором указано в коде.
wsashw вне форума Ответить с цитированием
Старый 24.09.2019, 15:00   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Т.е. с названием просто тупо Sub Zapuskalka() не сработает?
Можете не отвечать.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ChromeDriver не видит элементы. А GeckoDriver видит. DedPerded Общие вопросы Web 2 17.08.2018 12:22
сенсорный телефон изменил формат. Можно ли как то вернуть формат на jpeg? Коста342 Мобильные ОС (Android, iOS, Windows Phone) 4 03.04.2018 11:22
Макрос не преобразует формат zaquson Microsoft Office Excel 5 13.05.2013 11:30
Спарсить то что видит снифер, но не видит браузер... FleXik Общие вопросы Delphi 8 11.12.2012 00:44
Макрос по авто сохранению данных в формат CSV, где ошибки? TKinfront Microsoft Office Excel 0 21.03.2011 21:35