Страницы: 1
RSS
Макрос для выбора из списка
 
Здравствуйте

Буду очень признателен тем кто помогут написать макрос... сам не программирую, что то делал когда то на ВБА, но сейчас не могу справиться.

Есть два файла Excel: реестр в котором другой макрос добавляет записи, одна строка - одна запись, в столбце А - дата. Второй - отчет. В нем нужно подключиться к первому, отыскать все записи указанной даты (они могут быть разбросаны по списку), и скопировать эти строки в файл отчета. При этом, в файле отчета ячейки находятся не в том же порядке как и в реестре. Нужно копировать каждую ячейку отдельно.

Самому как бы удалось сделать цикл, в нем двигаю активную ячейку вниз, проверяю чтобы дата=содержимому... Но вот копировать не удается...
Подскажите, как решить эту задачу...

Спасибо.
 
DennMonn, здравствуйте. Без файла-примера даже пробовать нечего
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
DennMonn написал:
написать макрос
А почему именно макрос, с чего Вы взяли, что он вообще нужен?
Неизлечимых болезней нет, есть неизлечимые люди.
 
Ухх. жаль, остался на работе.
там у меня было два объекта:
Код
СurrentWB = ActiveWorkbook
ReesterWB = Open() ... reester file.

В цикле перемещаю ActiveCell по списку дат, вниз. Если нахожу нужную дату - нужно скопировать несколько ячеек из данной строки в СurrentWB
Пытался делать примерно так:
Код
СurrentW.Worksheets(sheet).ActiveCell.Value =  ReesterW.Worksheets(rsheet).ActiveCell.Value
СurrentW.Worksheets(sheet).ActiveCell.Offset(0, 1)
ReesterW.Worksheets(sheet).ActiveCell.Offset(0, 1)

Первая строка тут выдавала ошибку.

Макрос, потому что им нужна кнопка в файле отчета, при нажатии на которую сразу распечатался отчет по указанной выше дате.
Изменено: DennMonn - 22.01.2018 20:57:08
 
А без макроса разве нельзя нажать кнопку и получить аналогичный результат?
Неизлечимых болезней нет, есть неизлечимые люди.
 
Цитата
TheBestOfTheBest написал:
А без макроса разве нельзя нажать кнопку и получить аналогичный результат?
Ну не знаю, если можно, подскажите, как это сделать?

З.Ы. под словом "макрос" я подразумеваю процедуру на ВБА ...
Изменено: DennMonn - 19.01.2018 17:45:59
 
Цитата
Пытался делать примерно так:
СurrentW.Worksheets(sheet).ActiveCell.Value =  ReesterW.Worksheets(rsheet).ActiveCell.Value
Пропущена буква В в СurrentWB и в ReesterWB, видимо поэтому выдает ошибку.
 
Спасибо за ответ, но дело не в этом. На работе там переменные были написаны правильно.
Ошибка была с синтаксисе... Не помню точно, но по смыслу что то типа "подобное не поддерживается".
Сейчас я попробую сделать примерно то же самое дома, выложу файлы.
 
Вот попытался создать то же что и на работе.
Но не могу загрузить ни архив, ни файлы отдельно - загружаются только до 90% :(
Загрузил архив на свой гугл-драйв.
Скачать
 
Друзья, файлы загрузил, никто не может помочь?
Сегодня на работе смотрел, та же самая ошибка, нет необходимости заменить файлы на гугл-драйве.
 
Цитата
Подскажите, как решить эту задачу...
Применить автофильтр по дате и скопировать видимые строки в отчет
 
Файлы записать в папку C:\1, в report_reestr.xlsm изменить дату, таблица должна обновиться.
"Ручное" обновление таблицы: ПКМ-Обновить
Изменено: TheBestOfTheBest - 23.01.2018 07:21:49
Неизлечимых болезней нет, есть неизлечимые люди.
 
TheBestOfTheBest,спасибо. Но у меня не работает. Вот что я вижу (скриншоты).
Кроме того, я вижу у вас  16 и 17е число... мне нужно чтобы данные новой даты заменили старые данные, а не накапливались внизу.
Может подскажете вашу идею, как вы это сделали, и я попробую разобраться... Но мне кажется что процедурами проще, тем более что у меня почти готово, только обращение с ячейкам между книгами не работает.

Рисунки удалены: превышение допустимого размера вложения [МОДЕРАТОР]
 
Цитата
DennMonn написал:
мне нужно чтобы данные новой даты заменили старые данные
странно, я полагал, что
Цитата
DennMonn написал:
отыскать все записи указанной даты
т.е. дата д.б указана, в тексте запроса намеренно сделано больше или равно указанной даты, чтобы Вы сами разобрались, а не использовали готовый код.

Цитата
DennMonn написал:
Но у меня не работает.
Судя по скриншотам работать должно, но
Фалы должны назваться как я их выложил и находиться в папке С:\1  
Неизлечимых болезней нет, есть неизлечимые люди.
 
TheBestOfTheBest,Они и находятся с папке С:\1
Отчет должен работать так:
- нужно распечатать отчет по 15.10.2018 - вводим эту дату, формируется отчет (все записи от 15.01.2018) и выводятся на печать.
- нужно распечатать отчет по 16.01.2018 - вводим эту дату, старые записи на странице отчета удаляются, появляются новые под шапкой, и отправляются на печать
- и т.д.
 
В форме используется календарь, где вы можете задать дату начала и конца отчета.
На листе "На_печать" формируется отчет за выбранный промежуток дат.
 
Kuzmich,спасибо за идею с интервалом дат! Хотя моя задача - сделать отчет только для одного дня, интервал тоже будет очень кстати. Пока не совсем понял как работать с автофильтром в процедурах, но думаю этот способ проще чем перебор по строкам... Попробую его реализовать. Хотя мне так и не понятно как обмениваться данными между ячейками двух открытых книг, не имея в процедуре конкретных ссылок (А1, С3), а просто номер строки и столбца!
Было бы клево сделать так:
1. в реестре применить фильтр (останутся только нужные строки)
2. Определить диапазон данных, выделить его и скопировать - тут проблема в том, что в отчете данные одной строки должны быть в другом порядке, чем в реестре.
3. В файле отчета - вставить.

Я хотел делать так:
1. Пройти по всем! ячейкам, где содержатся даты
2. Если дата совпадает с нужной - скопировать ячейки данной строки в файл отчета, в нужном порядке, потом переместить активную ячейку вниз.
3. Продолжить поиск до конца списка реестра.
Страницы: 1
Наверх