Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2007 - Как выделить слово без пробела в конце

Ответить
Настройки темы
2007 - Как выделить слово без пробела в конце

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Очень раздражает, что выделение посредством клавиатуры (Ctrl+Shift+Стрелка вправо) приводит к выделению не только самого слова, но также пунктуации и пробела, следующего за ними. Как выделять слово само по себе, без пунктуационных знаков и пробела?

P.S. Я знаю, что это поведение присуще многим windows-программам. На мой взгляд, такое поведение выделения для последующего копирования-вставки в другие приложения крайне неудобно.
P.P.S. Я знаю про Shift+Стрелка влево, однако это костыль и использовать его по 100500 раз в день напрягает. Мне нужно постоянное решение - что угодно: макрос, скрипт, внешнее приложение.

Отправлено: 01:29, 31-07-2014

 

Динохромный


Contributor


Сообщения: 690
Благодарности: 317

Профиль | Отправить PM | Цитировать


vanvanov, объектную модель ворда я представляю смутно, с бедра на вскидку - такой код:
Код: Выделить весь код
Sub Select_word()
Dim strTxt As String

Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend

strTxt = Right(Selection.Text, 1)
Select Case strTxt
Case ".", ",", " ", "!", "?"
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
End Select
End Sub
Ограничение - курсор должен стоять непосредственно перед тем словом, которое вы хотите выделить.
Соответственно, возможен вариант, чтобы курсор стоял в любом месте слова, тут однако код работает не совсем корректно в граничных условиях (при выделении в начале документа, скобочки и т.д.), если есть желание потестировать - попробуйте код ниже (остановить выполнение кода можно сочетанием ctrl+break , если вдруг зависнет)
Посмотреть код:
Код: Выделить весь код
Sub s_wd()
Dim strTxt As String
Do
If Selection.Start = 0 Then Exit Do
If Selection.Information(wdFirstCharacterColumnNumber) = 1 Then Exit Do
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
strTxt = Selection.Text
If strTxt = " " Then Selection.MoveRight Unit:=wdCharacter, Count:=2
Selection.MoveLeft Unit:=wdCharacter, Count:=1

Loop Until strTxt = " "

Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend

strTxt = Right(Selection.Text, 1)
Select Case strTxt
Case ".", ",", " ", "!", "?"
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
End Select
    
End Sub

Последний раз редактировалось a_axe, 31-07-2014 в 13:22.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:16, 31-07-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


a_axe, спасибо большое! Ваш код работает (я пробовал 1-й вариант), однако, тут возникла другая проблема. Я назначил на макрос Ctrl+Shift+Стрелка вправо, чтобы использовать универсальные сочетания клавиш. Но раньше я мог зажать Ctrl+Shift и выделять соседние слова с помощью стрелки вправо, а теперь таким образом выделяется только текущее слово. Может, как-нибудь можно прописать дальнейшее выделение с помощью стрелки вправо?

Отправлено: 00:42, 01-08-2014 | #3


Динохромный


Contributor


Сообщения: 690
Благодарности: 317

Профиль | Отправить PM | Цитировать


vanvanov, если вас утроит ограничение, что на словах из одного символа (в смысле предлоги "и", "в", "о" и т.п.) код будет останавливаться и курсор нужно будет передвинуть стрелочкой вручную, то:
Код: Выделить весь код
Sub Select_word()
Dim strTxt As String
If Len(Selection.Text) <> 1 Then
Selection.MoveRight Unit:=wdCharacter, Count:=2
End If

Select Case Selection.Text
Case ".", ",", " ", "!", "?"
Selection.MoveRight Unit:=wdCharacter, Count:=1
End Select

Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend

strTxt = Right(Selection.Text, 1)
Select Case strTxt
Case ".", ",", " ", "!", "?"
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
End Select
End Sub
Альтернативный вариант кода:
читать дальше »
Код: Выделить весь код
Sub s_wd()
Dim strTxt As String
If Len(Selection.Text) <> 1 Then
Selection.MoveRight Unit:=wdCharacter, Count:=2
End If

Select Case Selection.Text
Case ".", ",", " ", "!", "?"
Selection.MoveRight Unit:=wdCharacter, Count:=1
End Select

Do
If Selection.Start = 0 Then Exit Do
If Selection.Information(wdFirstCharacterColumnNumber) = 1 Then Exit Do
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
strTxt = Selection.Text
If strTxt = " " Then Selection.MoveRight Unit:=wdCharacter, Count:=2
Selection.MoveLeft Unit:=wdCharacter, Count:=1

Loop Until strTxt = " "



Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend

strTxt = Right(Selection.Text, 1)
Select Case strTxt
Case ".", ",", " ", "!", "?"
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
End Select
    
End Sub

Последний раз редактировалось a_axe, 01-08-2014 в 02:46.


Отправлено: 02:35, 01-08-2014 | #4


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


a_axe, это уже ближе к истине, но не совсем то. Можно ли использовать стрелку вправо не для сдвига выделения на одно слово, а для расширения уже существующего выделения еще на одно слово (но без пробелов, пунктуации на конце)? Я сделал анимированный GIF, который показывает, как в моем представлении это должно происходить:

Отправлено: 16:45, 01-08-2014 | #5


Пользователь


Сообщения: 64
Благодарности: 1

Профиль | Отправить PM | Цитировать


Шли годы, а решения так и нет.
Скажите в 10 винде это проблема осталась, а в 11 ? (ну то есть повод обновлять есть или нет, ну они же сделали копипасту в консоле)

Отправлено: 19:36, 24-10-2021 | #6



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2007 - Как выделить слово без пробела в конце

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Выделить из строки текста слово определенной длины и записать в переменную Grafitchic Скриптовые языки администрирования Windows 14 16-07-2014 12:23
2010 - Хочу все знать о WORD 2010 часть 6: выделение слова без пробела после слова test2235 Microsoft Office (Word, Excel, Outlook и т.д.) 2 02-11-2013 22:20
Все знают про обьеденение строк ('слово'&'еще слово'), а есть ли способ исключениеня? tweakos AutoIt 3 15-07-2009 09:52
C/C++ - посчитать количество символов без пробела ShadowMas Программирование и базы данных 5 07-05-2009 10:51
php функция переноса строки без учета пробела dima1981 Вебмастеру 5 16-11-2008 10:29




 
Переход