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

Вход

Регистрация

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

 

= Мир MS Excel/Замена обычного пробела на неразрывный - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Замена обычного пробела на неразрывный
карандаш Дата: Пятница, 20.05.2016, 09:11 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Здравствуйте все!

Вот сделал красивый (потому, что компактный) макрос для замены обычного пробела на неразрывный для предлогов
(чтобы не было "висячих" предлогов на конце строк)

[vba]
Код
Sub nbsp_pred()
'
' Замена пробелов на неразрывные
'
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
        .Text = "( [ВвСсКк№]) "
        .Replacement.Text = "\1^s"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.MoveLeft Unit:=wdCharacter, Count:=1
End Sub
[/vba]

Однако, в данном случае поиск идёт по однобуквенным предлогам.
А как можно сделать тоже самое, но для двух- и более буквенных предлогов?
Например, для "по", "до" и прочее...

2. Подскажите, как избавиться от "задваивания" описания предлогов в первом случае (готовом) и во втором (по которому вопрос) из-за различия в больших и маленьких буквах ("в" и "В", "с" и "С", и т.д.)? Чтобы регистр был любой.
 
Ответить
СообщениеЗдравствуйте все!

Вот сделал красивый (потому, что компактный) макрос для замены обычного пробела на неразрывный для предлогов
(чтобы не было "висячих" предлогов на конце строк)

[vba]
Код
Sub nbsp_pred()
'
' Замена пробелов на неразрывные
'
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
        .Text = "( [ВвСсКк№]) "
        .Replacement.Text = "\1^s"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.MoveLeft Unit:=wdCharacter, Count:=1
End Sub
[/vba]

Однако, в данном случае поиск идёт по однобуквенным предлогам.
А как можно сделать тоже самое, но для двух- и более буквенных предлогов?
Например, для "по", "до" и прочее...

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

Автор - карандаш
Дата добавления - 20.05.2016 в 09:11
_Boroda_ Дата: Пятница, 20.05.2016, 09:17 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16709
Репутация: 6501 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Вообще-то 2 вопроса - 2 темы, но поскольку второй неразрывно связан с кодом первого ...
Так вот, по второму вопросу - в Ворде тоже есть LCase и UCase - маленькие и большие буквы соответственно


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВообще-то 2 вопроса - 2 темы, но поскольку второй неразрывно связан с кодом первого ...
Так вот, по второму вопросу - в Ворде тоже есть LCase и UCase - маленькие и большие буквы соответственно

Автор - _Boroda_
Дата добавления - 20.05.2016 в 09:17
карандаш Дата: Суббота, 21.05.2016, 08:11 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
ну, второй, это подвопрос )))
с другой стороны вроде же в макросе указано

.MatchCase = False

но, почему-то, не влияет на результат.

А по поводу первого (главного) вопроса есть простые варианты решения? :)


Сообщение отредактировал карандаш - Суббота, 21.05.2016, 08:15
 
Ответить
Сообщениену, второй, это подвопрос )))
с другой стороны вроде же в макросе указано

.MatchCase = False

но, почему-то, не влияет на результат.

А по поводу первого (главного) вопроса есть простые варианты решения? :)

Автор - карандаш
Дата добавления - 21.05.2016 в 08:11
карандаш Дата: Понедельник, 23.05.2016, 06:49 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Невозможно отредактировать предыдущее сообщение (через сутки). Поэтому здесь.

Нашёл следующее (может кому пригодится):
1. Правила оформления записи для замены: http://artefact.lib.ru/design/text_khozyainov.shtml

2. По решению заданного вопроса (копия из комментов одного сайта):

Цитата
Для однобуквенных предлогов и союза "и" между пробелами:
Найти: ( )([ВИКОСУвикосу])( )
Заменить на: \1\2^s

Для двухбуквенных предлогов между пробелами:
Найти: ( )([В-Св-с])([абзот])( )
Заменить на: \1\2\3^s

Вторая замена захватывает еще и союз "да", но он редко встречается. Не влияет на "не".

Обе замены делать в режиме подстановочных знаков


Всем спасибо! ))
 
Ответить
СообщениеНевозможно отредактировать предыдущее сообщение (через сутки). Поэтому здесь.

Нашёл следующее (может кому пригодится):
1. Правила оформления записи для замены: http://artefact.lib.ru/design/text_khozyainov.shtml

2. По решению заданного вопроса (копия из комментов одного сайта):

Цитата
Для однобуквенных предлогов и союза "и" между пробелами:
Найти: ( )([ВИКОСУвикосу])( )
Заменить на: \1\2^s

Для двухбуквенных предлогов между пробелами:
Найти: ( )([В-Св-с])([абзот])( )
Заменить на: \1\2\3^s

Вторая замена захватывает еще и союз "да", но он редко встречается. Не влияет на "не".

Обе замены делать в режиме подстановочных знаков


Всем спасибо! ))

Автор - карандаш
Дата добавления - 23.05.2016 в 06:49
  • Страница 1 из 1
  • 1
Поиск:

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