Страницы: 1
RSS
Макрос с курсивом, Как найти все слова в столбце написанные курсивом и поставить перед каждым из них символ, например $
 
Так что бы получилось например:
Я $люблю таблицы $Excel
 
Доброе время суток
Вариант
Код
Public Sub MarkItalic()
    Dim pCell As Range
    For Each pCell In Selection
        If (TypeName(pCell.Value) = "String") Then
            pCell.Value(XlRangeValueDataType.xlRangeValueXMLSpreadsheet) = Replace(pCell.Value(XlRangeValueDataType.xlRangeValueXMLSpreadsheet), "<I>", "<I>$")
        End If
    Next
End Sub
 
то же самое, в профиль )
Код
Sub test()
    ' по мотивам https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=161266&TITLE_SEO=161266-problemy-pri-pokraske-makrosom-kuskov-teksta-vnutri-yacheyki&MID=1275741#message1275741
    temp = ActiveCell.value(11)
    temp = Replace(temp, "<I>", "$<I>")
    temp = Replace(temp, "</I>", "</I>$")
    ActiveCell.value(11) = temp
End Sub
 
Андрей VG, Спасибо большое! А можно ли сделать так что бы поиск и замена происходили не по выделенной области, а всегда только в диапазоне например B2:B200
 
И да, к сожалению оба варианта в случае если выделено курсивом подряд несколько слов ставят желаемый символ только перед первым из выделенных, а не перед каждым.
 
Цитата
dimmy написал:
а не перед каждым
и правда
должен ли "желаемый символ" отображаться курсивом?
 
nilske, нет, не важно, он просто должен быть перед курсивным словом
 
можно дополнить макрос чтобы в найденных подстроках вставлять "желаемые символы"
либо всё сделать регулярными выражениями как сделано в макросе по ссылке
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=161266&TITLE_SEO=161266-problemy-pri-pokraske-makrosom-kuskov-teksta-vnutri-yacheyki&MID=1275778#message1275778
Код
Sub MarkWords()
    temp = Replace(ActiveCell.value(11), "<I>", "start_substring<I>")
    ActiveCell.value(11) = Replace(temp, "</I>", "</I>end_substring")
    txt = ActiveCell.value
    '...
    'обработка txt
    '
End Sub
Изменено: nilske - 16.01.2024 18:02:14
 
Код
Sub dddd()
For Each x In Range("B1:B200")
    For i = x.Characters.Count To 1 Step -1
        xb = x.Characters(i, 1).Font.Italic
        If (i = 1 Or x.Characters(i - 1, 1).Text = " ") And xb Then
            x.Characters(i, 0).Insert "$"
        End If
    Next
Next
End Sub
Изменено: Бахтиёр - 17.01.2024 08:39:24
Страницы: 1
Наверх