Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
25.04.2024, 08:04:09

Войти
Хотите поблагодарить участника за дельный совет? Нажмите [Повысить]. Так вы заслуженно поднимите репутацию активному участнику.
33 243 Сообщений в 5 458 Тем от 6 761 Пользователей
Последний пользователь: Halfdoor
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Скорректировать макрос, чтобы подсвечивалась только измененная часть текста в яч
Страниц: [1]   Вниз
Печать
Автор Тема: Скорректировать макрос, чтобы подсвечивалась только измененная часть текста в яч  (Прочитано 3256 раз)
0 Пользователей и 1 Гость смотрят эту тему.
akosta
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« : 16.06.2020, 12:38:57 »

Добрый день. Подскажите,  как изменить макрос, чтобы выделялась цветом только измененная или добавленная часть текста, а не весь текст в ячейке. Спасибо

Option Explicit
Dim vValue
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target <> vValue Then Target.Font.Color = vbBlue
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count = 1 Then vValue = Target
End Sub
Записан
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #1 : 16.06.2020, 12:58:35 »

При выделении ячейки запомнить старое значение. После изменения значения сравнить его с новым. Это можно сделать в Вашем файле-примере с нужным результатом

Какой диапазон нужно отслеживать?
Записан
akosta
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« Ответ #2 : 16.06.2020, 13:07:42 »

диапазон - таблица Excel  300 строк на 45 столбцов. А макрос прикрепила ко всему листу.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #3 : 16.06.2020, 13:32:18 »

только измененная или добавленная часть текста
а что делать, если сначала было значение "план", а стало "запланировано"? Это как считать - часть текста или весь? И что делать, если изменение произошло повторно? А если в ячейке формула? Тут вообще нюансов много.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
akosta
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« Ответ #4 : 16.06.2020, 16:27:11 »

К счастью формул в этих ячейках нет, только текст, который корректируется с определенной периодичностью. Разные ячейки закреплены за определенными пользователями, которые вносят корректировки. Текст в ячейках объемный, и поэтому отследить, что в нем изменено, довольно сложно.
По поводу повторной корректировки, вопрос хороший, не учла изначально.  Но это не так критично, т.к. для анализа нужна текущая корректировка по каждой ячейке, а после ознакомления можно все закрасить одним цветом.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #5 : 16.06.2020, 17:09:20 »

Как самый простой вариант:
Код: (vb)
Option Explicit
Dim vValue
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target <> vValue Then
        Dim lp&, s$
        s = Replace(Target.Value, vValue, "")
        lp = InStr(1, Target.Value, s, 1)
        If lp > 0 Then
            Target.Font.Color = vbBlack
            Target.Characters(lp, Len(s)).Font.Color = vbBlue
        Else
            Target.Font.Color = vbBlue
        End If
    End If
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count = 1 Then vValue = Target
End Sub
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
akosta
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« Ответ #6 : 16.06.2020, 17:16:23 »

Спасибо, работает.
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru