Страницы: 1
RSS
Изменение регистра - конкретного слова в тексте
 
Доброе утро, друзья.
Помогите.

У меня есть макрос - изменения регистра текста выделенной ячейки. И есть макрос - изменения цвета конкретного слова.
Как заставить макрос изменения конкретного слова - менять еще и регистр ? (То есть имеющиеся макросы - эти операции делают, но вот объединить их - я никак не могу)
 
Код
[c18].value=ucase([c18].value)
Если я правильно понял задачу
 
oldy7, это - весь код ?
Куда именно его добавлять ?
 
Я не знаю, в какой теме вы взяли второй файл, но сильно подозреваю, что именно в ней есть код, который позволит объединить эти две задачи добавлением одной строки.
 
RAN, объединил два кода в один.
Они - не работают будучи объединенными,
В коде - за функцию изменения регистра - отвечает функция ConvertRegistr

Как одной строчкой - сослаться на эту функцию, из кода смены цвета (чтобы менялся не только цвет, но и регистр) ?
 
Объяснять мне, для чего я написал функцию, по меньшей мере странно.  :)
А скрещивать нужно не ежа и ужа, а, хотя бы ежа с ежихой.
Код
Sub Мяу()
    Dim objRegExp As Object, oMatches As Object, ar(), i&
    Dim s$, cl As Range
    Set cl = [c18]
    s = cl.Value
    Set objRegExp = CreateObject("VBScript.RegExp")
    With objRegExp
        .Global = True: .IgnoreCase = True: .MultiLine = False
        .Pattern = [d16].Value
        If .test(s) Then
            Set oMatches = .Execute(s)
            ReDim ar(1 To oMatches.Count, 1 To 2)
            For i = 0 To oMatches.Count - 1
                ar(i + 1, 1) = oMatches(i).firstindex + 1
                ar(i + 1, 2) = oMatches(i).Length
            Next
            s = .Replace(s, ConvertRegistr(oMatches(1), 1))
            cl.Value = s
            For i = 1 To UBound(ar)
                cl.Characters(ar(i, 1), ar(i, 2)).Font.ColorIndex = 3
            Next
        End If
    End With
End Sub
Изменено: RAN - 05.12.2017 23:38:27
 
RAN, что-то не работает.

Выдает ошибку "Run-time error '5'  Invalid procedure call or argument"
И подсвечивает строку
Код
s = .Replace(s, ConvertRegistr(oMatches(1), 1))
 
Цитата
RAN написал:
А скрещивать нужно не ежа и ужа, а, хотя бы ежа с ежихой.
Послушайте... я вот все - насчет ежа с ежихой....
Что-то не получается у них ничего !!!

Еж выдает ошибку "Run-time error '5'  Invalid procedure call or argument"  
 
Код
oMatches(0)
 
Так правильнее
Код
Sub Мяу()
    Dim objRegExp As Object, oMatches As Object, ar(), i&
    Dim s$, cl As Range
    Set cl = [c18]
    s = cl.Value
    Set objRegExp = CreateObject("VBScript.RegExp")
    With objRegExp
        .Global = True: .IgnoreCase = True: .MultiLine = False
        .Pattern = "([^а-яёa-z]|^)" & [d16].Value & "([^а-яёa-z]|$)"
        If .test(s) Then
            Set oMatches = .Execute(s)
            ReDim ar(1 To oMatches.Count, 1 To 2)
            For i = 0 To oMatches.Count - 1
                ar(i + 1, 1) = oMatches(i).firstindex + 1 - CLng(Len(oMatches(i).subMatches(0)) > 0)
                ar(i + 1, 2) = oMatches(i).Length - Len(oMatches(i).subMatches(0)) - Len(oMatches(i).subMatches(1))
                Mid(s, oMatches(i).firstindex + 1, oMatches(i).Length) = ConvertRegistr(oMatches(i), 4)
            Next
            cl.Value = s
            For i = 1 To UBound(ar)
                cl.Characters(ar(i, 1), ar(i, 2)).Font.ColorIndex = 3
            Next
        End If
    End With
End Sub
 
RAN, почему-то не работает.
Регистр - с малого на большой - для конкретного слова - не меняет.
 
dotten12, то есть - макрос ошибки не выдает - просто не меняет регистр?
Изменено: Megamen2 - 07.12.2017 11:46:43
 
Цитата
dotten12 написал:
В коде - за функцию изменения регистра - отвечает функция ConvertRegistr
А она имеет 4 значения параметра регистра.
 
RAN, теперь все стало ясно как днем.
Спасибо за совет.
Страницы: 1
Читают тему
Наверх