Страница 5 из 6
Re: Найти нужное значение в таблице по условию
Добавлено: 04 дек 2013, 13:02
SAS888
Файл "Book6.2" из поста №35 это оно и есть...
Re: Найти нужное значение в таблице по условию
Добавлено: 04 дек 2013, 13:03
VanBlack
Лист "Сетка (8 уч.)" скопировался не сначала страницы... Из-за этого не уместился на нём лист "Сетка (4 уч.)" (не хватило как раз одной строки).
Re: Найти нужное значение в таблице по условию
Добавлено: 04 дек 2013, 13:07
VanBlack
Разрыв в одну строку не нужен, если следующий копируемый лист не умещается на странице...
Re: Найти нужное значение в таблице по условию
Добавлено: 04 дек 2013, 13:28
SAS888
В коде макроса в файле из поста №35 "Book6.2" строку
замените на
Re: Найти нужное значение в таблице по условию
Добавлено: 04 дек 2013, 13:35
VanBlack
Теперь разрыва нет между "Сетка (8 уч.)" и "Сетка (4 уч.)". Разрыв нужен, если данные страниц копируемых листов с разрывом в одну строку между собой умещаются на одной странице, если не умещаются, то разрыв между ними не нужен...
И как сделать чтобы не копировались кнопки макросов с копируемых листов...
Re: Найти нужное значение в таблице по условию
Добавлено: 05 дек 2013, 07:06
SAS888
Вроде разобрался. Смотрите. Проверяйте...
Теперь все объекты (кнопки, флажки и т. п.) из листов со скобками копируются на лист "Протокол поединков" вместе с данными, а после копирования удаляются.
Re: Найти нужное значение в таблице по условию
Добавлено: 05 дек 2013, 14:16
VanBlack
Да, в примере Book6.3 всё так, но код в нём теперь, как я понял, просматривает листы на предмет копирования полностью, т.к. нет строки:
Код: Выделить всё
If Sh.[A30].Text = "" Then Set x = Sh.[A1:M39] Else Set x = Sh.[A1:M78]
У меня с 79 строки, включая столбец "A", имеются и другие данные, которые не нужно выводить в протокол. А при новом коде он и их затрагивает, и информация выводится совсем не так как нужно... Для наглядности, просто скопируйте любую таблицу и вставьте её в любую сетку, начиная с A79, а затем создайте протокол и увидите что получается...
Re: Найти нужное значение в таблице по условию
Добавлено: 05 дек 2013, 19:20
SAS888
У меня с 79 строки, включая столбец "A", имеются и другие данные, которые не нужно выводить в протокол.
Мне об этом не было известно. Макрос копирует все данные, начиная с 1-й строки и заканчивая последней заполненной строкой в столбце "A".
Сформулируйте точные требования для всех возможных вариантов и прикрепите соответствующие примеры (с теми "левыми" данными, которые не нужно копировать). Также, прикрепите лист с желаемым результатом. Похоже, что я пытаюсь решить не ту задачу, которая Вам требуется...
Re: Найти нужное значение в таблице по условию
Добавлено: 06 дек 2013, 01:08
VanBlack
Я думаю, что всё получится, если указать "заканчивая" не последней заполненной строкой в столбце "A", а строкой 78 в столбце "A". Я изначально указывал, что для протокола важны данные только диапазонов A1:M39 (если на листе с которого происходит копирование ячейка A30 пустая) и A1:M78 (если на листе с которого происходит копирование ячейка A30 не пустая). A1:M39 и A1:M78 - это диапазоны 1-й и 2-ой страницы. На листах, где ячейка A30 не пустая, данные для протокола не умещаются на 1-ой странице, поэтому и указывается 2-ая страница. Со строки 79, т.е. с 3-ей страницы, могут идти и другие данные, которые не нужны ни для протокола, ни для просмотра на предмет копирования. Это как-бы рабочая зона... Если бы не ограничения по размеру загружаемого файла для вложения, я бы давно уже скинул нормальный пример. Но думаю, теперь вы поймёте, что требуется. Пример, как это должно выглядеть, я выкладывал в посте #31 (Пример6). В новом вложении добавил данные идущие со строки 79. С этой же строки могут вводится и всякие заметки по ходу поединков и т. д., которые не нужны для протокола. Для копирования так же не нужны кнопки для макросов, которые я добавил в новом вложении. Вместо формул, - значения... Ну вроде и всё... Конечный результат должен выглядеть как в примере6 из поста #31.
Re: Найти нужное значение в таблице по условию
Добавлено: 06 дек 2013, 07:30
SAS888
Макрос определяет количество строк для копирования, затем проверяет, уместятся ли эти строки в текущую страницу, и, в зависимости от этого принимается решение: вставлять ниже, или начиная с начала следующей страницы. Поэтому, задача состоит не в том, чтобы определить сколько страниц с данными находится на очередном листе, а в том, какое количество строк с данными требуется копировать. Например, если все данные умещаются в первых 9-ти строках ("сетка 2 уч."), то нужно проверять, уместятся ли эти строки на текущую страницу формируемого протокола. Именно 9 строк, а не все строки страницы.
Если в файле "Book6.3.2" строку
Код: Выделить всё
Set x = Sh.Range("A1:M" & Sh.Cells(Rows.Count, 1).End(xlUp).Row)
заменить на
Код: Выделить всё
Set x = Sh.Range("A1:M" & Sh.[A78].End(xlUp).Row)
, то все будет выглядеть как надо. Но, боюсь, что это опять частный случай, т. к. на листах с одной страницей тоже может быть не нужная информация ниже таблицы (в Ваших примерах такого нет).
Вопрос такой: по какому (каким) признаку можно определить последнюю строку диапазона листа с данными для копирования в протокол? Однозначно ответив на этот вопрос мы решим все проблемы.