Добрый день, уважаемые специалисты по экселю. Помогите решить вопрос.
У меня есть макрос выделения слов в текстовой ячейке C18. В настоящий момент в ячейке C18 - выделяются все встречающиеся заданные слова. Макрос срабатывает на событие Worksheet_Change - в ячейках D16 и E16 - куда записываются слова, которые надо выделить.
Как изменить макрос, чтобы он выделял два слова "день" и "вечер", но при условии, что расстояние между этими словами - не более 4 символов. (если два одинаковых слова стоят рядом - например "вечер - вечер" - то они не должны выделяться, поскольку - это одинаковые слова)
Добрый день, уважаемые специалисты по экселю. Помогите решить вопрос.
У меня есть макрос выделения слов в текстовой ячейке C18. В настоящий момент в ячейке C18 - выделяются все встречающиеся заданные слова. Макрос срабатывает на событие Worksheet_Change - в ячейках D16 и E16 - куда записываются слова, которые надо выделить.
Как изменить макрос, чтобы он выделял два слова "день" и "вечер", но при условии, что расстояние между этими словами - не более 4 символов. (если два одинаковых слова стоят рядом - например "вечер - вечер" - то они не должны выделяться, поскольку - это одинаковые слова)RipVanWinkel
Sub Мяу() Dim objRegExp As Object, oMath As Object Dim s$, i& Set objRegExp = CreateObject("VBScript.RegExp") objRegExp.Global = True: objRegExp.IgnoreCase = True: objRegExp.MultiLine = False objRegExp.Pattern = "день[\s\S]{1,4}вечер" s = Selection.Value If objRegExp.test(s) Then Set oMath = objRegExp.Execute(s) For i = 0 To oMath.Count - 1 Selection.Characters(Start:=oMath(i).Firstindex + 1, Length:=Len(oMath(i))).Font.ColorIndex = 3 Next End If End Sub
[/vba]
[vba]
Код
Sub Мяу() Dim objRegExp As Object, oMath As Object Dim s$, i& Set objRegExp = CreateObject("VBScript.RegExp") objRegExp.Global = True: objRegExp.IgnoreCase = True: objRegExp.MultiLine = False objRegExp.Pattern = "день[\s\S]{1,4}вечер" s = Selection.Value If objRegExp.test(s) Then Set oMath = objRegExp.Execute(s) For i = 0 To oMath.Count - 1 Selection.Characters(Start:=oMath(i).Firstindex + 1, Length:=Len(oMath(i))).Font.ColorIndex = 3 Next End If End Sub
RAN, не работает. Выделяет слова - только если - слово "день" стоит первым. Если слово "вечер" идет перед словом "день" - макрос никак на эту связку не реагирует.
RAN, не работает. Выделяет слова - только если - слово "день" стоит первым. Если слово "вечер" идет перед словом "день" - макрос никак на эту связку не реагирует.RipVanWinkel
Всегда ли два слова "день" и "вечер" встречаются в ячейке парами?
Нет, они могут идти кучей - "вечер, день, вечер, день, вечер, день". Поскольку здесь расстояние между словами - меньше 4 символов - то выделить нужно всю эту связку.
Всегда ли два слова "день" и "вечер" встречаются в ячейке парами?
Нет, они могут идти кучей - "вечер, день, вечер, день, вечер, день". Поскольку здесь расстояние между словами - меньше 4 символов - то выделить нужно всю эту связку.RipVanWinkel