Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2009, 02:29   #1
Qv_1
 
Регистрация: 31.05.2009
Сообщений: 6
По умолчанию Количество пробелов до конца строки

Есть строка произвольной длины. Как узнать количество пробелов до конца этой строки (нужно для подчеркивания всей строки до конца)?
Qv_1 вне форума Ответить с цитированием
Старый 31.05.2009, 03:24   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию Научитесь один раз делать это по-человечески!

Никогда, слышите, никогда не используйте пробелы в количестве более 1 шт подряд.
Это преступление. Пробел нужен только для отделения одного слова от другого.
Если вам нужно сделать подчеркивание до конца строки, то воспользуйтесь табуляцией с заполнителем.
Как это делается.
  1. Печатаете ваш текст.
  2. Затем левой кнопкой мышки щелкаете по горизонтальной линейке недалеко от правого края страницы. У вас на линейке появится один из таких значков:
    которые обозначают табуляцию с выравниванием по левому краю, по центру, по правому краю, по разделителю и с чертой.
  3. Затем оттяните мышкой этот значок на правый край страницы
  4. Зайдите в параметры абзаца (правая кнопка→Абзац) и в нижнем левом углу жмете кнопку «Табуляция» (либо дважды кликаете по этому загадочному значку). Появится окно для установки табуляции, где уже будет присутствовать один элемент. У меня это выглядело так:
  5. Кликните мышкой в той последовательности, что на рисунке обозначена красными цифрами.
  6. После возвращения в документ перейдите в конец строки и нажмите клавишу TAB. Должно получиться как-то так (непечатные символы ¶, → могут быть у вас выключены):
Либо все это можно сделать макросом.
Код:
Sub SetTabUntilTheEndOfPage()
  With ActiveDocument.PageSetup
    Selection.ParagraphFormat.TabStops.Add .PageWidth - .LeftMargin - .RightMargin, 0, 3
    Selection.TypeText vbTab
  End With
End Sub
И есть еще один вариант с использованием таблиц. Смотрите здесь
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 31.05.2009 в 03:26. Причина: Выделил замечание о пробелах
viter.alex вне форума Ответить с цитированием
Старый 31.05.2009, 07:46   #3
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Вот так можно подчеркнуть всю строку.
Вложения
Тип файла: doc Doc1.doc (42.0 Кб, 43 просмотров)
Busine2009 вне форума Ответить с цитированием
Старый 31.05.2009, 11:41   #4
Qv_1
 
Регистрация: 31.05.2009
Сообщений: 6
По умолчанию

viter.alex Спасибо! Ошарашен. Не знал, что такое есть в ворде.

Busine2009. Это знаю. У этого метода один недостаток. Верхняя граница следующего параграфа затирает нижнюю границу текущего.
Я делаю это программно из Аксеса. Очень неудобно.
Qv_1 вне форума Ответить с цитированием
Старый 31.05.2009, 11:53   #5
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Ну как знаешь, только я не понял про затирание границ.
Busine2009 вне форума Ответить с цитированием
Старый 31.05.2009, 12:39   #6
Qv_1
 
Регистрация: 31.05.2009
Сообщений: 6
По умолчанию

У меня каждая строка это новый параграф. Подчеркиваю строку макросом, рисующим нижнюю или верхнюю границу.

Код:
With oWord.ActiveDocument.Paragraphs(10).Borders(wdBorderBottom)
      .LineStyle = 1
      .LineWidth = 8
     .Color = 0
End With
Этот макрос для 10-го параграфа рисует нижнюю границу, но при этом затирает нижнюю границу у 9-го параграфа, поскольку неявно рисует прозрачную верхнюю границу 10-го.
Qv_1 вне форума Ответить с цитированием
Старый 31.05.2009, 13:17   #7
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Конечно затирает. Если вы хотите иметь нижнюю границу у абзаца, то вам нужно позаботиться, чтобы была верхняя граница у следующего абзаца
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 01.06.2009, 14:58   #8
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Qv_1, если вы используете такую конструкцию для установки границ, то делайте так:
Код:
  With oWord.ActiveDocument.PageSetup
    oWord.ActiveDocument.Paragraphs(10).Range.ParagraphFormat.TabStops.Add .PageWidth - .LeftMargin - .RightMargin, 0, 3
    oWord.ActiveDocument.Paragraphs(10).Range.InsertAfter vbTab
  End With
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 01.06.2009 в 15:10.
viter.alex вне форума Ответить с цитированием
Старый 01.06.2009, 19:58   #9
Qv_1
 
Регистрация: 31.05.2009
Сообщений: 6
По умолчанию

Спасибо! Это тоже применю.
Qv_1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог функции Trim-удаление лишних пробелов в начале и в конце передаваемой строки GULINA Помощь студентам 6 23.05.2009 15:07
Определить количество вхождений строки S1 в строку S2 Berckyt Microsoft Office Word 5 16.03.2009 00:27
Строки(удаление пробелов). C language SuccEssoR Помощь студентам 4 15.01.2009 17:13
Потоки и символ конца строки Deatz Общие вопросы C/C++ 3 07.05.2008 20:02