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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2011, 18:26   #11
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Сейчас пробовать некогда, но пришёл в голову такой вариант:
Код:
Sub test()
  Dim C As Cell
  Dim N As Long
  N = ActiveDocument.Tables(1).Range.Cells.Count
  Set C = ActiveDocument.Tables(1).Range.Cells(N)
  Do Until C Is Nothing
    C.Select
    Set C = C.Previous
    If N Mod 2 = 0 Then C.Next.Delete
    N = N - 1
 Loop
End Sub
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 28.01.2011 в 23:20.
viter.alex вне форума Ответить с цитированием
Старый 28.01.2011, 18:33   #12
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
...Sub m110128_1629()....
Приведенный код, делает то же, что и мой код в первом сообщении темы. Нужно в обратном порядке. Повторюсь: главная проблема описана во втором сообщении темы.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 28.01.2011, 18:42   #13
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
....пришёл в голову такой вариант...
Да, зря я замутил с задачей по удалению ячеек. Надо было начинать со второго сообщения. Решить конкретную задачу для ячеек не проблема. Другое дело, когда неизвестно, что будет удалено (вся таблица, строка с ячейкой, столбец или сама ячейка) и будет ли. Тут то и выходит вперед проблема запоминания позиции в документе.

Не знаю, как реализовали в For Each запоминание позиции, но при удалении в этом цикле, после Next, следующая ячейка находится без проблем. А хочу то же, но в обратном порядке
Макросы на заказ и готовый пакет - http://mtdmacro.ru/

Последний раз редактировалось Вождь; 28.01.2011 в 18:50.
Вождь вне форума Ответить с цитированием
Старый 28.01.2011, 22:00   #14
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Вождь, напишите функцию инвертирующую коллекцию ...
Т.е я предлагаю в цикле For Each идти не по коллекции а по её инвертированной копии.
Aent вне форума Ответить с цитированием
Старый 28.01.2011, 23:36   #15
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию

Цитата:
Сообщение от Вождь Посмотреть сообщение
сделать закладку от края документа до контрольной позиции
Что-то я туплю. Что значит процитированное? Разве закладка бывает "от чего-то до чего-то"?

Цитата:
при удалении области удаляются и закладки в этой области, то придется контролировать еще их целостность.
А если ставить закладку за одну позицию до изменяемой области?
garik64 вне форума Ответить с цитированием
Старый 29.01.2011, 05:52   #16
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от Aent Посмотреть сообщение
Вождь...напишите функцию инвертирующую коллекцию...
Да, можно перебирать коллекцию с конца с помощью счетчика. Но как узнать, что обрабатывать, если по ходу часть коллекции удалили? Сразу теряется позиция, в отличие от хитрого способа, реализованного в For Each.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 29.01.2011, 06:02   #17
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от garik64 Посмотреть сообщение
...закладка бывает "от чего-то до чего-то"?...
Закладка охватывает область (Range), а область имеет начало (Range.Start) и конец (Range.End)
Цитата:
Сообщение от garik64 Посмотреть сообщение
...А если ставить закладку...
Закладку можно удалить вместе с областью: Range.Delete удаляет закладки, область который внутри Range. Напомню главной условие: оп ходу перебора может быть удалена любая часть документа. К тому же создание закладки - это дополнительное изменение документа.

Плюс закладки, что внутри таблицы ее область правильно сдвигается при удалении/вставке, в отличие от объекта Range. Минус - удаляется вместе с областью.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/

Последний раз редактировалось Вождь; 29.01.2011 в 06:11.
Вождь вне форума Ответить с цитированием
Старый 29.01.2011, 12:13   #18
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Похоже, запомнить позицию в изменяющемся документе НЕВОЗМОЖНО.

Народ, а кто работал с XML-схемой/структурой документа? Где про это лучше почитать?
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 29.01.2011, 13:19   #19
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Может это:
Код:
Private Sub Очистить_Click()
 Dim j
For j = ActiveDocument.Tables(1).Rows.Count To 3 Step -2
 ActiveDocument.Tables(1).Rows(j).Delete
Next j
End Sub
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 29.01.2011, 14:04   #20
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Цитата:
Сообщение от Вождь
Да, можно перебирать коллекцию с конца с помощью счетчика
Зачем же счётчик ? Я имел в виду несколько другое
Код:
For each t in InvCol(ActiveDocument.Tables)
....
next t
, где InvCol - пользовательская функция возвращающая инвертированную копию коллекции Tables
Aent вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
бекап только наоборот Cpluser SQL, базы данных 1 23.01.2011 12:30
Все наоборот! ship85 Microsoft Office Excel 0 20.01.2011 14:19
Ввод слова наоборот program123 Общие вопросы Delphi 4 09.05.2009 11:06
ВПР наоборот Python Microsoft Office Excel 6 11.04.2009 00:08
Слово наоборот Ketu Паскаль, Turbo Pascal, PascalABC.NET 12 16.03.2008 00:23