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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2009, 07:32   #1
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
Сообщение Удаление отступов в последней ячейке каждой строки в каждой таблице

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

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

Последний раз редактировалось Busine2009; 30.05.2009 в 07:40.
Busine2009 вне форума Ответить с цитированием
Старый 30.05.2009, 13:15   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

В макросе из этого сообщения заменяем строчку
Код:
oTbl.Cell(i, oTbl.Rows(i).Cells.Count).RightPadding = 0
на одну из следующих строчек, или на все сразу
Код:
      'Отступ первой строки
      oTbl.Cell(i, oTbl.Rows(i).Cells.Count).Range.ParagraphFormat.FirstLineIndent = 0
      'Отступ слева
      oTbl.Cell(i, oTbl.Rows(i).Cells.Count).Range.ParagraphFormat.LeftIndent = 0
      'Отступ справа
      oTbl.Cell(i, oTbl.Rows(i).Cells.Count).Range.ParagraphFormat.RightIndent = 0
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 02.06.2009, 21:24   #3
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Спасибо, работает, правда, я там своими кривыми руками внес кое-какие изменения.
Busine2009 вне форума Ответить с цитированием
Старый 05.06.2009, 22:29   #4
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Sub SetRightBorderToZero()
Dim oTbl As Table, i&
For Each oTbl In ActiveDocument.Tables
For i = 1 To oTbl.Rows.Count
oTbl.Cell(i, oTbl.Rows(i).Cells.Count).RightPadd ing = 0
Next
Next
End Sub

Переделал этот макрос под первую ячейку в каждой строке. Но если строка была объединена, то не работает и не указывается с какой таблицей проблемы. Как можно решить эту проблему. Если в документе 100 таблиц, то отыскивать такую таблицу долго.
Busine2009 вне форума Ответить с цитированием
Старый 06.06.2009, 10:40   #5
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Я так понимаю, что ошибка возникает, если в таблице есть ячейки, объедиенные по строкам.
И что вы хотите? Чтобы эта таблица выделялась или все-таки установить в ней границы?
Немного дополнив код, можно будет выделять проблемную таблицу:
Код:
Sub SetRightBorderToZero()
  On Error Resume Next
  Dim oTbl As Table, i&
  For Each oTbl In ActiveDocument.Tables
    For i = 1 To oTbl.Rows.Count
      oTbl.Cell(i, oTbl.Rows(i).Cells.Count).RightPadding = 0
      If Err.Number <> 0 Then Err.Clear: oTbl.Select: Exit Sub
    Next
  Next
End Sub
Если строчку
Код:
If Err.Number <> 0 Then Err.Clear: oTbl.Select: Exit Sub
заменить на:
Код:
If Err.Number <> 0 Then Err.Clear
то неправильная таблица будет просто пропускаться.
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 06.06.2009 в 15:27.
viter.alex вне форума Ответить с цитированием
Старый 06.06.2009, 10:44   #6
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Естественно, хочется, чтобы в ней устанавливались нужные параметры.

А еще, можно сделать так, чтобы макрос применялся к таблицам определенной ширины? Что если таблица шире определенного размера, то макрос к ней не должен применяться?
Busine2009 вне форума Ответить с цитированием
Старый 06.06.2009, 12:19   #7
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от Busine2009 Посмотреть сообщение
…А еще, можно сделать так, чтобы макрос применялся к таблицам определенной ширины? Что если таблица шире определенного размера, то макрос к ней не должен применяться?
Неужели самостоятельно это так трудно сделать? Ровно две строчки кода для проверки ширины таблицы
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 06.06.2009, 12:27   #8
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Окей, попробую сам.
Busine2009 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование каждой строки V@mpir Общие вопросы Delphi 4 20.05.2009 23:28
Заменить максимальный по модулю элемент каждой строки на противоположный по знаку bestlover Помощь студентам 7 06.04.2009 18:06
Первый нечетный элемент каждой строки удвоить (предполагается, что в каждой строке есть нечетный элемент Галина002 Помощь студентам 1 18.03.2009 06:30
Определить максимальный по модулю элемент каждой строки. (Kate) Помощь студентам 2 29.11.2008 21:05
всплывающие подсказки для каждой строки CListBox! mahsus Общие вопросы .NET 0 01.04.2008 08:41