Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Заполнение накладной из выделенных в Excel строк - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение накладной из выделенных в Excel строк (Макросы Sub)
Заполнение накладной из выделенных в Excel строк
Callione Дата: Пятница, 26.07.2013, 16:09 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день.
Целый день провел за чтением учебников и сообщений на форуме, но так и не смог разобраться, простите чайника(
Есть база в Excel 2007, в ней закладка "Учет" со списком номенклатурных позиций (см. файл "Справочник номенклатуры").

Задача: выделив ряд последних строк - автоматически добавить информацию из выделенных строчек в накладную (пример корректного заполнения накладной во втором файле "Пример_накладная", заполняемые поля выделены желтым).
Если не предложите более удобного способа, то инициировать макрос для выделенных строк можно и банальным Alt+F8 ->выполнить.

Помогите пожалуйста!
К сообщению приложен файл: _.xlsm.xls (39.5 Kb) · 2812566.xls (51.0 Kb)
 
Ответить
СообщениеДобрый день.
Целый день провел за чтением учебников и сообщений на форуме, но так и не смог разобраться, простите чайника(
Есть база в Excel 2007, в ней закладка "Учет" со списком номенклатурных позиций (см. файл "Справочник номенклатуры").

Задача: выделив ряд последних строк - автоматически добавить информацию из выделенных строчек в накладную (пример корректного заполнения накладной во втором файле "Пример_накладная", заполняемые поля выделены желтым).
Если не предложите более удобного способа, то инициировать макрос для выделенных строк можно и банальным Alt+F8 ->выполнить.

Помогите пожалуйста!

Автор - Callione
Дата добавления - 26.07.2013 в 16:09
Wasilich Дата: Пятница, 26.07.2013, 16:36 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
выделив ряд последних строк - автоматически добавить информацию из выделенных строчек в накладную
Опять задача с непонятками.
В примере базы всего 4 строчки и в накладной указаны две никак не последние.
Почему именно последние? Это сколько? Как выделяются?
Обычно накладные формируют выборочно.
И почему накладная не в одном файле с базой?
И, не для этой ли цели была задача в теме -
Автоматическое заполнение 2й таблицы по клику в 1й таблице


Сообщение отредактировал Wasilic - Пятница, 26.07.2013, 16:45
 
Ответить
Сообщение
выделив ряд последних строк - автоматически добавить информацию из выделенных строчек в накладную
Опять задача с непонятками.
В примере базы всего 4 строчки и в накладной указаны две никак не последние.
Почему именно последние? Это сколько? Как выделяются?
Обычно накладные формируют выборочно.
И почему накладная не в одном файле с базой?
И, не для этой ли цели была задача в теме -
Автоматическое заполнение 2й таблицы по клику в 1й таблице

Автор - Wasilich
Дата добавления - 26.07.2013 в 16:36
Callione Дата: Пятница, 26.07.2013, 16:57 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Поясню

1. В накладной действительно указаны первые две строчки. Подразумевается, что в список номенклатуры было добавлено еще 2 строчки - и теперь их необходимо перенести в накладную, выделив курсором. НО на самом деле это может быть и 20, и 200 только что добавленных позиций.

2. Последние строчки - это константа существующего бизнес-процесса. Накладные будут формироваться на последние N-добавленных строк, а не на первые, третьи и пятые, например.
Удобнее всего выделять строки, щелкая мышкой на полях, там где Excel уже заранее пронумеровал все свои строки. Если такой вариант не будет рабочим - тогда устроит выделение строк в колонке "Наименование".

3. Вы наверное имеете в виду каталог. Но в моем случае это не каталог, а закладка учета движения товара (с индивидуальными ценами для данного канала сбыта) - и последние строки как раз и будут те, на которые надо составить накладную.

4. Первоначально я сделал накладную в одном файле. Но мне не понравилось, что при сохранении заполненной накладной вместе с ней сохраняется и сама база. При больших объемах проще сразу открывать накладную отдельным файлом - и сохранять ее отдельно от базы.

5. автоматическое заполнение было для смежной темы - таким образом будет заполняться закладка учета движения товара, автоматически пересчитывая номенклатуру с учетом дисконта/надбавки для выбранного канала сбыта.


Сообщение отредактировал Callione - Пятница, 26.07.2013, 16:59
 
Ответить
СообщениеПоясню

1. В накладной действительно указаны первые две строчки. Подразумевается, что в список номенклатуры было добавлено еще 2 строчки - и теперь их необходимо перенести в накладную, выделив курсором. НО на самом деле это может быть и 20, и 200 только что добавленных позиций.

2. Последние строчки - это константа существующего бизнес-процесса. Накладные будут формироваться на последние N-добавленных строк, а не на первые, третьи и пятые, например.
Удобнее всего выделять строки, щелкая мышкой на полях, там где Excel уже заранее пронумеровал все свои строки. Если такой вариант не будет рабочим - тогда устроит выделение строк в колонке "Наименование".

3. Вы наверное имеете в виду каталог. Но в моем случае это не каталог, а закладка учета движения товара (с индивидуальными ценами для данного канала сбыта) - и последние строки как раз и будут те, на которые надо составить накладную.

4. Первоначально я сделал накладную в одном файле. Но мне не понравилось, что при сохранении заполненной накладной вместе с ней сохраняется и сама база. При больших объемах проще сразу открывать накладную отдельным файлом - и сохранять ее отдельно от базы.

5. автоматическое заполнение было для смежной темы - таким образом будет заполняться закладка учета движения товара, автоматически пересчитывая номенклатуру с учетом дисконта/надбавки для выбранного канала сбыта.

Автор - Callione
Дата добавления - 26.07.2013 в 16:57
Wasilich Дата: Пятница, 26.07.2013, 20:55 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Еще больше туплю! %) Мож кто другой разберется. :)
 
Ответить
СообщениеЕще больше туплю! %) Мож кто другой разберется. :)

Автор - Wasilich
Дата добавления - 26.07.2013 в 20:55
Callione Дата: Пятница, 26.07.2013, 22:44 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Зачем туплю? Ваши макросы до сих пор были самыми качественными из того что я смог найти! Значит туплю я, если не могу постановку задачи объяснить)

Попробую еще раз.
Мне нужно реализовать заполнение накладной данными из последних строк приложенной таблицы. Необходимые для переноса в накладную строки выделяются мышкой. Макрос инициируется вручную (альт+ф8). По факту, из выделенных строк в накладную нужно перенести только значения артикула, наименования, количества и цены.
Пока у меня получается заполнить накладную только через ручное копирование в накладную номеров пп- строк (вставляю их за границей области печати документа) и последующее авто заполнение нужных полей через ВПР. Но это не удобно.
Есть еще вариант с проставлением напротив нужной строки маркера - с автоматическим заполнением накладной, но это еще более неудобный вариант (слишком много строк придется сначала маркировать, а потом снимать маркер).. Получается вариант с выделением нужных строк - самый удобный!


Сообщение отредактировал Callione - Пятница, 26.07.2013, 23:45
 
Ответить
СообщениеЗачем туплю? Ваши макросы до сих пор были самыми качественными из того что я смог найти! Значит туплю я, если не могу постановку задачи объяснить)

Попробую еще раз.
Мне нужно реализовать заполнение накладной данными из последних строк приложенной таблицы. Необходимые для переноса в накладную строки выделяются мышкой. Макрос инициируется вручную (альт+ф8). По факту, из выделенных строк в накладную нужно перенести только значения артикула, наименования, количества и цены.
Пока у меня получается заполнить накладную только через ручное копирование в накладную номеров пп- строк (вставляю их за границей области печати документа) и последующее авто заполнение нужных полей через ВПР. Но это не удобно.
Есть еще вариант с проставлением напротив нужной строки маркера - с автоматическим заполнением накладной, но это еще более неудобный вариант (слишком много строк придется сначала маркировать, а потом снимать маркер).. Получается вариант с выделением нужных строк - самый удобный!

Автор - Callione
Дата добавления - 26.07.2013 в 22:44
SkyPro Дата: Суббота, 27.07.2013, 11:47 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Лучше предоставьте исходные данные + данные, которые должны получиться в итоге.
Пока так.
К сообщению приложен файл: copy.xls (88.0 Kb)


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Суббота, 27.07.2013, 12:48
 
Ответить
СообщениеЛучше предоставьте исходные данные + данные, которые должны получиться в итоге.
Пока так.

Автор - SkyPro
Дата добавления - 27.07.2013 в 11:47
Pelena Дата: Суббота, 27.07.2013, 13:04 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Тема обсуждается ещё здесь
http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=49990


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТема обсуждается ещё здесь
http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=49990

Автор - Pelena
Дата добавления - 27.07.2013 в 13:04
SergeyKorotun Дата: Суббота, 27.07.2013, 17:19 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Чтобы заполнить столбец маркером с какой-то ячейки до последней строки с данными, станьте на начальную ячейку, введите маркер и дважды кликните ЛКМ по маленькому черному квадратику в нижнем правом углу выделенной ячейки.
 
Ответить
СообщениеЧтобы заполнить столбец маркером с какой-то ячейки до последней строки с данными, станьте на начальную ячейку, введите маркер и дважды кликните ЛКМ по маленькому черному квадратику в нижнем правом углу выделенной ячейки.

Автор - SergeyKorotun
Дата добавления - 27.07.2013 в 17:19
Callione Дата: Суббота, 27.07.2013, 21:01 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо, SkyPro! Ваш макрос научил меня новому и закрыл сразу несколько открытых вопросов! Теперь я смогу заполнять всю накладную через выделение строк, как и хотел! :) И спасибо, что сделали макрос только для 2-х строк и автозаполнение сразу со второй страницы накладной - благодаря этому включил мозг и разобрался со всеми деталями!

Осталось еще пара вопросов, можете мне помочь с ними?

1. Сейчас накладная имеет фиксированное количество строк. Если партия большая - придется добавлять в середину еще один лист (по аналогии со второй страницей накладной), если партия маленькая - придется удалять вторую страницу.
Вопрос - как сделать таблицу в накладной резиновой? Чтобы автоматом подстраивалась под необходимое количество выделенных строк? Обращаю внимание, что в накладной на каждой странице таблицы присутствует шапка, из-за нее я и не знаю, как решить эту задачку.

2. Как же все-таки формировать накладную отдельным файлом (не на соседней закладке)? В экселе или ворд - не принципиально..
 
Ответить
СообщениеСпасибо, SkyPro! Ваш макрос научил меня новому и закрыл сразу несколько открытых вопросов! Теперь я смогу заполнять всю накладную через выделение строк, как и хотел! :) И спасибо, что сделали макрос только для 2-х строк и автозаполнение сразу со второй страницы накладной - благодаря этому включил мозг и разобрался со всеми деталями!

Осталось еще пара вопросов, можете мне помочь с ними?

1. Сейчас накладная имеет фиксированное количество строк. Если партия большая - придется добавлять в середину еще один лист (по аналогии со второй страницей накладной), если партия маленькая - придется удалять вторую страницу.
Вопрос - как сделать таблицу в накладной резиновой? Чтобы автоматом подстраивалась под необходимое количество выделенных строк? Обращаю внимание, что в накладной на каждой странице таблицы присутствует шапка, из-за нее я и не знаю, как решить эту задачку.

2. Как же все-таки формировать накладную отдельным файлом (не на соседней закладке)? В экселе или ворд - не принципиально..

Автор - Callione
Дата добавления - 27.07.2013 в 21:01
Callione Дата: Суббота, 27.07.2013, 21:07 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
SkyPro, есть только один вопрос по макросу.
В нем присутствует копируемый в ячейку символ "запятая", для разделения в ячейке артикула и наименования товара. Все бы хорошо, но если количество копируемых строк менее количества строк в накладной, то макрос копирует в остальные строки накладной одну запятую... Можете подсказать, как этого можно избежать?

Спасибо!
 
Ответить
СообщениеSkyPro, есть только один вопрос по макросу.
В нем присутствует копируемый в ячейку символ "запятая", для разделения в ячейке артикула и наименования товара. Все бы хорошо, но если количество копируемых строк менее количества строк в накладной, то макрос копирует в остальные строки накладной одну запятую... Можете подсказать, как этого можно избежать?

Спасибо!

Автор - Callione
Дата добавления - 27.07.2013 в 21:07
Матраскин Дата: Суббота, 27.07.2013, 21:27 | Сообщение № 11
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
да простит меня SkyPro

после цикла With в макросе добавьте
[vba]
Код
Sub copy()
   With Sheets(2)
     ....
   End With
   If Sheets(2).[D46] = "," Then Sheets(2).[D46] = ""
   If Sheets(2).[D47] = "," Then Sheets(2).[D47] = ""
End Sub
[/vba]

либо в цикле проверяйте, на ваше усмотрение


в интернете опять кто-то не прав
 
Ответить
Сообщениеда простит меня SkyPro

после цикла With в макросе добавьте
[vba]
Код
Sub copy()
   With Sheets(2)
     ....
   End With
   If Sheets(2).[D46] = "," Then Sheets(2).[D46] = ""
   If Sheets(2).[D47] = "," Then Sheets(2).[D47] = ""
End Sub
[/vba]

либо в цикле проверяйте, на ваше усмотрение

Автор - Матраскин
Дата добавления - 27.07.2013 в 21:27
Callione Дата: Суббота, 27.07.2013, 21:33 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Матраскин, спасибо!
а обязательно фиксировать ячейку? Эдак по каждой записи в макросе придется дублировать эту проверку. Есть какой-нить способ обойтись парой строк, а не 100-200?
 
Ответить
СообщениеМатраскин, спасибо!
а обязательно фиксировать ячейку? Эдак по каждой записи в макросе придется дублировать эту проверку. Есть какой-нить способ обойтись парой строк, а не 100-200?

Автор - Callione
Дата добавления - 27.07.2013 в 21:33
Матраскин Дата: Суббота, 27.07.2013, 21:38 | Сообщение № 13
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Callione, эээээм.....так в макросе основном ячейки фиксированы deal


в интернете опять кто-то не прав
 
Ответить
СообщениеCallione, эээээм.....так в макросе основном ячейки фиксированы deal

Автор - Матраскин
Дата добавления - 27.07.2013 в 21:38
Callione Дата: Суббота, 27.07.2013, 22:00 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
а что, нет признака "любой" ячейки?
 
Ответить
Сообщениеа что, нет признака "любой" ячейки?

Автор - Callione
Дата добавления - 27.07.2013 в 22:00
Матраскин Дата: Суббота, 27.07.2013, 22:09 | Сообщение № 15
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Callione, конечно есть, но зачем в данном случае делать это здесь? абсолютно незачем
[vba]
Код
Cells(1,1) или  Range("A1") или A1
[/vba]
изменяя чиселки в цикле - меняем ячеечки


в интернете опять кто-то не прав
 
Ответить
СообщениеCallione, конечно есть, но зачем в данном случае делать это здесь? абсолютно незачем
[vba]
Код
Cells(1,1) или  Range("A1") или A1
[/vba]
изменяя чиселки в цикле - меняем ячеечки

Автор - Матраскин
Дата добавления - 27.07.2013 в 22:09
Callione Дата: Суббота, 27.07.2013, 22:44 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
спасибо, понял.

Коллеги, при переносе макроса SkyPro в свою базу столкнулся с проблемой:

В макросе есть ссылка на Лист2 (Sheets(2)). А у меня в базе закладка с накладной живет в Лист13.

[vba]
Код

Sub copy()
With Sheets(2)
[/vba]

Если я оставляю без изменений, то данные копируются в Лист2, где у меня живут совсем другие данные.
Если я изменяю 2 на 13, то при запуске макроса появляется ошибка: "Run time error `1004`: Application-defined or object-defined error"
Если я меняю в настройках VBA (где текст макроса редактирую) Name листов 2 и 13 местами, то все равно не робит :(

Что я делаю не так?
 
Ответить
Сообщениеспасибо, понял.

Коллеги, при переносе макроса SkyPro в свою базу столкнулся с проблемой:

В макросе есть ссылка на Лист2 (Sheets(2)). А у меня в базе закладка с накладной живет в Лист13.

[vba]
Код

Sub copy()
With Sheets(2)
[/vba]

Если я оставляю без изменений, то данные копируются в Лист2, где у меня живут совсем другие данные.
Если я изменяю 2 на 13, то при запуске макроса появляется ошибка: "Run time error `1004`: Application-defined or object-defined error"
Если я меняю в настройках VBA (где текст макроса редактирую) Name листов 2 и 13 местами, то все равно не робит :(

Что я делаю не так?

Автор - Callione
Дата добавления - 27.07.2013 в 22:44
Матраскин Дата: Суббота, 27.07.2013, 22:57 | Сообщение № 17
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Callione, наверно 13 лист на самом деле не 13 ^_^
напишете [vba]
Код
Worksheets("Лист13")
[/vba] вместо [vba]
Код
Sheets(х)
[/vba] или как он там у вас называется ))


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Суббота, 27.07.2013, 22:57
 
Ответить
СообщениеCallione, наверно 13 лист на самом деле не 13 ^_^
напишете [vba]
Код
Worksheets("Лист13")
[/vba] вместо [vba]
Код
Sheets(х)
[/vba] или как он там у вас называется ))

Автор - Матраскин
Дата добавления - 27.07.2013 в 22:57
Callione Дата: Суббота, 27.07.2013, 23:04 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
О, супер. Worksheets("Накладная") - и все заработало!
 
Ответить
СообщениеО, супер. Worksheets("Накладная") - и все заработало!

Автор - Callione
Дата добавления - 27.07.2013 в 23:04
Callione Дата: Суббота, 27.07.2013, 23:31 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Еще вопрос - как сделать так, чтобы макрос работал только при выделении строк на закладке "Учет"? Сейчас смог заполнить накладную с совершенно другой закладки, и конечно накладная заполнилась не корректными данными. Как быть?
 
Ответить
СообщениеЕще вопрос - как сделать так, чтобы макрос работал только при выделении строк на закладке "Учет"? Сейчас смог заполнить накладную с совершенно другой закладки, и конечно накладная заполнилась не корректными данными. Как быть?

Автор - Callione
Дата добавления - 27.07.2013 в 23:31
Матраскин Дата: Суббота, 27.07.2013, 23:34 | Сообщение № 20
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
сделай Worksheets вместо Sheets ;)


в интернете опять кто-то не прав
 
Ответить
Сообщениесделай Worksheets вместо Sheets ;)

Автор - Матраскин
Дата добавления - 27.07.2013 в 23:34
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение накладной из выделенных в Excel строк (Макросы Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!