1

Тема: Удалить текст параграфа, но оставить его форматирование

Вопрос, собственно, в заголовке: как удалить текст параграфа, но оставить его форматирование? Т.е., нужно сохранить интервалы

2

Re: Удалить текст параграфа, но оставить его форматирование

Почему-то обрезался первый пост:
_____________________________
Вопрос, собственно, в заголовке: как удалить текст параграфа, но оставить его форматирование? Т.е., нужно сохранить интервалы "до" и "после", размеры шрифта, отступы и т.п. служебные характеристики, что бы после удаления так называемых меток (после очистки текста параграфа) и при последующем вводе нового текста сохранялась его позиция, размер, и все остальные параметры.

3

Re: Удалить текст параграфа, но оставить его форматирование

VNIIAEN пишет:

Почему-то обрезался первый пост:
_____________________________
Вопрос, собственно, в заголовке: как удалить текст параграфа, но оставить его форматирование? Т.е., нужно сохранить интервалы "до" и "после", размеры шрифта, отступы и т.п. служебные характеристики, что бы после удаления так называемых меток (после очистки текста параграфа) и при последующем вводе нового текста сохранялась его позиция, размер, и все остальные параметры.

Попробуйте присвоить пустой текст диапазону текущего абзаца, не трогая символ конца абзаца. Например (если курсор стоит в абзаце, текст в котором надо удалить) :

Sub EmptyPara()
Dim pararg As Range
Set pararg = Selection.Range.Paragraphs(1).Range
pararg.SetRange Start:=pararg.Start, End:=pararg.End - 1
pararg.Text = ""
End Sub

4

Re: Удалить текст параграфа, но оставить его форматирование

yshindin пишет:
VNIIAEN пишет:

Почему-то обрезался первый пост:
_____________________________
Вопрос, собственно, в заголовке: как удалить текст параграфа, но оставить его форматирование? Т.е., нужно сохранить интервалы "до" и "после", размеры шрифта, отступы и т.п. служебные характеристики, что бы после удаления так называемых меток (после очистки текста параграфа) и при последующем вводе нового текста сохранялась его позиция, размер, и все остальные параметры.

Попробуйте присвоить пустой текст диапазону текущего абзаца, не трогая символ конца абзаца. Например (если курсор стоит в абзаце, текст в котором надо удалить) :

Sub EmptyPara()
Dim pararg As Range
Set pararg = Selection.Range.Paragraphs(1).Range
pararg.SetRange Start:=pararg.Start, End:=pararg.End - 1
pararg.Text = ""
End Sub

Благодарю за ответ. Я решил следующим образом (привожу фрагмент кода):

Function GetText(Optional ByVal txt As String = "")
    With Selection.Paragraphs.First.Range
        txt = .Text
        Selection.CopyFormat
        .Text = ""
        Selection.Paragraphs.Add Range:=Selection.Paragraphs(1).Range
        Selection.PasteFormat
        GetText = txt
    End With
End Function

5

Re: Удалить текст параграфа, но оставить его форматирование

yshindin пишет:
VNIIAEN пишет:

Почему-то обрезался первый пост:
_____________________________
Вопрос, собственно, в заголовке: как удалить текст параграфа, но оставить его форматирование? Т.е., нужно сохранить интервалы "до" и "после", размеры шрифта, отступы и т.п. служебные характеристики, что бы после удаления так называемых меток (после очистки текста параграфа) и при последующем вводе нового текста сохранялась его позиция, размер, и все остальные параметры.

Попробуйте присвоить пустой текст диапазону текущего абзаца, не трогая символ конца абзаца. Например (если курсор стоит в абзаце, текст в котором надо удалить) :

Sub EmptyPara()
Dim pararg As Range
Set pararg = Selection.Range.Paragraphs(1).Range
pararg.SetRange Start:=pararg.Start, End:=pararg.End - 1
pararg.Text = ""
End Sub

Кстати, ваш вариант работает правильнее, ещё раз благодарю! Переписал свою функцию таким образом:

Function GetText()
    Dim rng As Range, txt As String
    Set rng = Selection.Range.Paragraphs(1).Range
    txt = rng.Text
    rng.SetRange Start:=rng.Start, End:=rng.End - 1
    rng.Text = ""
    GetText = txt
End Function