Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставка и форматирование текста макросом - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин, DrMini  
Вставка и форматирование текста макросом
Shakal07 Дата: Четверг, 12.06.2025, 03:16 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 57
Репутация: 0 ±
Замечаний: 0% ±

Excel 2k3;2k7;2k10;2k13;2k19
Здравствуйте форумчене

Имеется несколько макрос подобного рода.
Прошу помощи в его доработке.
[vba]
Код

Sub eIdLangIT(control As IRibbonControl)
'
' Макрос заключить віделеный текст тагеми [lang id="1040"], [/lang]
'
' Обрамляем выделенный фрагмент текста
' Исключаем лишний пробел в конце выделения
' Исключаем знак абзаца в конце выделения
If Right(Selection.Text, 1) = Chr(32) Or _
   Right(Selection.Text, 1) = Chr(13) Then
   Selection.MoveLeft wdCharacter, 1, wdExtend
End If
With Selection
   .InsertBefore "[lang id=" & Chr(34) & "1040" & Chr(34) & "]"
   .InsertAfter "[/lang]"
End With
End Sub
[/vba]

Необходимо доработать следующим образом выделенный текст надо отформатировать стилем A.
А текст, который вставляется в начале и конце выделения надо отформатировать стилем B.

И как такому макросу назначить сочетания клавиш, если он не отображается в окне "Настройка клавиатуры"

Спасибо за помощь.


Сообщение отредактировал Shakal07 - Четверг, 12.06.2025, 03:53
 
Ответить
СообщениеЗдравствуйте форумчене

Имеется несколько макрос подобного рода.
Прошу помощи в его доработке.
[vba]
Код

Sub eIdLangIT(control As IRibbonControl)
'
' Макрос заключить віделеный текст тагеми [lang id="1040"], [/lang]
'
' Обрамляем выделенный фрагмент текста
' Исключаем лишний пробел в конце выделения
' Исключаем знак абзаца в конце выделения
If Right(Selection.Text, 1) = Chr(32) Or _
   Right(Selection.Text, 1) = Chr(13) Then
   Selection.MoveLeft wdCharacter, 1, wdExtend
End If
With Selection
   .InsertBefore "[lang id=" & Chr(34) & "1040" & Chr(34) & "]"
   .InsertAfter "[/lang]"
End With
End Sub
[/vba]

Необходимо доработать следующим образом выделенный текст надо отформатировать стилем A.
А текст, который вставляется в начале и конце выделения надо отформатировать стилем B.

И как такому макросу назначить сочетания клавиш, если он не отображается в окне "Настройка клавиатуры"

Спасибо за помощь.

Автор - Shakal07
Дата добавления - 12.06.2025 в 03:16
Gustav Дата: Суббота, 14.06.2025, 19:57 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2843
Репутация: 1194 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Необходимо доработать следующим образом выделенный текст надо отформатировать стилем A.
А текст, который вставляется в начале и конце выделения надо отформатировать стилем B.

Вот такой макрос у меня получился для решения Вашей задачи:
[vba]
Код
Option Explicit

Sub eIdLangIT()

    Dim tagBefore As String, tagAfter As String, str As String, rng As Range

    tagBefore = "[lang id=""1040""]"
    tagAfter = "[/lang]"
                    
    str = Trim(Selection.Text)
    If Right(str, 2) = vbCrLf Then
        str = Left(str, Len(str) - 2)
    ElseIf Right(str, 1) = Chr(32) Or Right(str, 1) = Chr(13) Then
        str = Left(str, Len(str) - 1)
    End If
    
    Selection.Text = tagBefore & str & tagAfter
    'сначала красим всю строку стилем B (должен быть стилем знака, не абзаца!)
    Selection.Style = ActiveDocument.Styles("Style_B")

    Set rng = Selection.Range
    rng.SetRange rng.Start + Len(tagBefore), rng.End - Len(tagAfter)
    'потом красим исходную строку без тегов стилем A (должен быть стилем знака, не абзаца!)
    rng.Style = ActiveDocument.Styles("Style_A")
    
End Sub
[/vba]

И как такому макросу назначить сочетания клавиш, если он не отображается в окне "Настройка клавиатуры"

В окне настройки отображаются (и, соответственно, запускаются) только макросы без параметров (т.е. без переменных в скобках). Сравните:
у Вас
[vba]
Код
Sub eIdLangIT(control As IRibbonControl)
[/vba]
и у меня
[vba]
Код
Sub eIdLangIT()
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Необходимо доработать следующим образом выделенный текст надо отформатировать стилем A.
А текст, который вставляется в начале и конце выделения надо отформатировать стилем B.

Вот такой макрос у меня получился для решения Вашей задачи:
[vba]
Код
Option Explicit

Sub eIdLangIT()

    Dim tagBefore As String, tagAfter As String, str As String, rng As Range

    tagBefore = "[lang id=""1040""]"
    tagAfter = "[/lang]"
                    
    str = Trim(Selection.Text)
    If Right(str, 2) = vbCrLf Then
        str = Left(str, Len(str) - 2)
    ElseIf Right(str, 1) = Chr(32) Or Right(str, 1) = Chr(13) Then
        str = Left(str, Len(str) - 1)
    End If
    
    Selection.Text = tagBefore & str & tagAfter
    'сначала красим всю строку стилем B (должен быть стилем знака, не абзаца!)
    Selection.Style = ActiveDocument.Styles("Style_B")

    Set rng = Selection.Range
    rng.SetRange rng.Start + Len(tagBefore), rng.End - Len(tagAfter)
    'потом красим исходную строку без тегов стилем A (должен быть стилем знака, не абзаца!)
    rng.Style = ActiveDocument.Styles("Style_A")
    
End Sub
[/vba]

И как такому макросу назначить сочетания клавиш, если он не отображается в окне "Настройка клавиатуры"

В окне настройки отображаются (и, соответственно, запускаются) только макросы без параметров (т.е. без переменных в скобках). Сравните:
у Вас
[vba]
Код
Sub eIdLangIT(control As IRibbonControl)
[/vba]
и у меня
[vba]
Код
Sub eIdLangIT()
[/vba]

Автор - Gustav
Дата добавления - 14.06.2025 в 19:57
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!