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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2014, 17:24   #1
nifra
 
Регистрация: 02.12.2011
Сообщений: 8
По умолчанию Изменение цвета ячейки согласно словарю

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

Код:
Option Explicit
Option Compare Text

Sub ЭТОТ_МАКРОС_НУЖНО_ЗАПУСКАТЬ()
Application.ScreenUpdating = False
    Dim iStart As Integer
    Dim rng As Range, cell As Range, sSearchString As String, lastRow&, i&, color&
    
    Set rng = Selection
    
lastRow = Sheets("словарь").[a1000].End(xlUp).Row

For i = 1 To lastRow
If Sheets("словарь").Range("A" & i).Font.ColorIndex <> xlAutomatic Then
    color = Sheets("словарь").Range("A" & i).Font.color
Else
    color = -65536
End If
    sSearchString = Sheets("словарь").Range("A" & i).Value

    For Each cell In rng
        If cell Like "*" & sSearchString & "*" Then
            iStart = InStr(cell.Value, sSearchString)
            With cell.Characters(Start:=iStart, Length:=Len(sSearchString)).Font
                .Bold = True
                .color = color
            End With
        End If
    Next
Next
Application.ScreenUpdating = True
End Sub
заранее спасибо
Вложения
Тип файла: zip 1.zip (25.9 Кб, 8 просмотров)

Последний раз редактировалось nifra; 10.06.2014 в 18:16.
nifra вне форума Ответить с цитированием
Старый 10.06.2014, 18:09   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Есть мысль запустить поиск iStart в цикле - но нет подопытного файла...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 10.06.2014, 18:16   #3
nifra
 
Регистрация: 02.12.2011
Сообщений: 8
По умолчанию

Добавил файл в шапку,
при нажатии на картинку происходит макрос
nifra вне форума Ответить с цитированием
Старый 10.06.2014, 18:30   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

В 2003 Ваш файл не открывается.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 10.06.2014, 21:54   #5
nifra
 
Регистрация: 02.12.2011
Сообщений: 8
По умолчанию

у меня excel 2013, при сохранении файла в 2003 не вижу, чтоб была поддержка макросов. как быть?
nifra вне форума Ответить с цитированием
Старый 10.06.2014, 22:43   #6
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

В 2003 макросы по умолчанию поддерживаются.
kalbasiatka вне форума Ответить с цитированием
Старый 11.06.2014, 09:17   #7
nifra
 
Регистрация: 02.12.2011
Сообщений: 8
По умолчанию

вот 2003 выкладываю
Вложения
Тип файла: zip 1.zip (22.3 Кб, 8 просмотров)
nifra вне форума Ответить с цитированием
Старый 11.06.2014, 09:43   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

И точно Loop достаточно (и одной доппроверки):
Код:
Option Explicit
Option Compare Text

Sub ЭТОТ_МАКРОС_НУЖНО_ЗАПУСКАТЬ()
    Application.ScreenUpdating = False
    Dim iStart As Integer
    Dim rng As Range, cell As Range, sSearchString As String, lastRow&, i&, color&

    Set rng = Selection

    lastRow = Sheets("словарь").[a1000].End(xlUp).Row

    For i = 1 To lastRow
        If Sheets("словарь").Range("A" & i).Font.ColorIndex <> xlAutomatic Then
            color = Sheets("словарь").Range("A" & i).Font.color
        Else
            color = -65536
        End If
        sSearchString = Sheets("словарь").Range("A" & i).Value

        For Each cell In rng
            If cell Like "*" & sSearchString & "*" Then
                Do
                    iStart = InStr(iStart + 1, cell.Value, sSearchString)
                    If iStart Then
                        With cell.Characters(Start:=iStart, Length:=Len(sSearchString)).Font
                            .Bold = True
                            .color = color
                        End With
                    End If
                Loop While iStart
            End If
        Next
    Next
    Application.ScreenUpdating = True
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 11.06.2014 в 09:46.
Hugo121 вне форума Ответить с цитированием
Старый 11.06.2014, 10:57   #9
nifra
 
Регистрация: 02.12.2011
Сообщений: 8
По умолчанию

Hugo121, огроменное Вам спасибо и низкий поклон!!!
nifra вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение цвета заливки ячейки в столбце согласно словарю Aidarkin Microsoft Office Excel 4 12.05.2014 14:23
изменение цвета ячейки dbgrid(a) Konstantin_ua БД в Delphi 13 25.12.2013 14:16
Изменение цвета ячейки по гипессылке Ayse Microsoft Office Excel 15 17.07.2013 10:46
Изменение цвета ячейки DBGridEh Dandy777 Общие вопросы Delphi 2 07.11.2012 14:46
DBGrid изменение цвета ячейки S.T.U.D.E.N.T C++ Builder 6 24.04.2012 13:21