Оформление заказов в excel

Содержание

  • 1 Правила оформления заказа
  • 2 Правила учета товара в экселе
  • 3 Что дает ведение учета магазина в Excel?
  • 4 Составление таблицы учета товара Excel
    • 4.1 Создание справочников
    • 4.2 Формирование выпадающих списков
    • 4.3 Формирование оборотной ведомости
    • 4.4 Отслеживание критических остатков
  • 5 Как вести складской учет в Excel?
  • 6 Таблица Excel «Складской учет»

Вы составили список контактов в Excel, и теперь вы хотите, чтобы изменить порядок в алфавитном порядке, помещая все имена от А до Я (или наоборот)? Вы решили каталогизировать все ваши фильмы или книги в электронную таблицу Excel, и хотели бы, чтобы все названия в алфавитном порядке? У меня для вас новость.

   Не могли бы вы, чтобы не иметь когда-нибудь замечали, но Excel включает в себя функцию, которая позволяет поместить содержимое выбранных ячеек в алфавитном порядке без перезаписи любого значения или перемещения ячеек вручную. Чтобы узнать, как вы, уделите несколько минут свободного времени и прочитать: Ниже описаны как своего рода в алфавитном порядке Excel шаг за шагом.

   Для этого урока я использовал версию Excel 2016, которая доступна как для Windows, и MacOS, но информация в руководстве применяется ко всем выпускам Office, с вкладками интерфейса, поэтому для всех редакций офиса из 2007 год. У меня есть хорошее чтение и хорошую работу!

   Тексты заказа в Excel для PC и Mac
 Если вы хотите узнать, как сортировать в алфавитном порядке Excel, запустите программу через ее значок на рабочем столе или в меню Пуск> Все программы для Windows и выбрать, следует ли создать или открыть таблицу, в которой переупорядочить текст следовать порядку в алфавитном порядке.

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

   Затем нажмите на кнопку Сортировка и фильтр, который находится в Excel Home вкладки (вверху справа, отмечен значком AZ) и выберите Сортировка от А до Я из меню, которое появляется на заказ клетки в алфавитном порядке.

       Вам необходимо отсортировать значение столбца в обратном направлении, то есть от Я до А? Нет проблем. Вы можете легко получить этот результат, нажав Сортировка & фильтр Excel и выбрав Сортировать от Я до А из меню, которое выскакивает.

   Если одно из значений будут заказаны в Excel есть также номера, перед выполнением процедуры я только что показал вам форматировать все значения в виде текста, в противном случае вы рискуете, что номера, сохраненные как числа сортируются перед тем, которые хранятся в виде текста. Для форматирования всех значений столбца в виде текста, выберите столбец в вопросе, вошел в Excel Home вкладку и выберите речевой текст из выпадающего меню General, расположенного в верхней части.

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

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

       Из окна относительного для персонализированных вы можете также установить различие между значениями в нижнем регистре и верхнем регистре (активации определенной функции от опций) меню и изменить критерий, по которому заказать выбранные значения (например, Cell цвета или цвет шрифта), используя выпадающее меню Сортировка.

   Заказать строки в алфавитном порядке по Excel
 Вы хотите, чтобы в алфавитном порядке значений, присутствующих в строке вместо столбца? Не волнуйтесь, вы можете сделать это.

   Первый шаг, который вы должны принять это, чтобы выбрать строку, содержащую значения для переупорядоченные, нажав на соответствующий номер (например, 6), после чего необходимо нажать на кнопку Сортировка и фильтр Excel, и вы должны выбрать пункт Произвольный заказ из меню, которое появляется.

   В открывшемся окне, нажимает кнопку Options, поставьте галочку рядом с заказной слева направо и нажмите на кнопке OK. Затем, выберите номер строки, чтобы быть заказана в раскрывающемся меню строки, убедитесь, что в раскрывающемся меню заказа нам вариант выбран От А до Я, и нажмите на кнопку OK, чтобы применить изменения.

       Очевидно, что если вы не хотите, чтобы отсортировать значения ряда А до Я от Я до А, но вместо опции От А до Я Вы должны выбрать опцию От Z до A из выпадающего меню заказа.

   Тексты заказа в Excel для смартфонов и планшетов
 Я уверен, что вы хорошо знаете, Excel также доступна как приложение для смартфонов и планшетов. Она совместима с Android, IOS и Windows Phone, и вы можете использовать бесплатно на всех устройствах, которые имеют размер меньше, чем 10,1».

   В этот момент возникает сомнение спонтанно: вы можете заказать с помощью текстов Excel для смартфонов и планшетов? Ответ: да. Есть все дополнительные опции, которые можно найти в настольной версии приложения, но ответ да.

   Для сортировки в алфавитном порядке значений столбца в Excel для смартфона, откройте таблицу, на которой вы собираетесь работать, выберите столбец, который содержит значения, которые будут заказана (например, A) и давит на значок карандаша в верхней право. Затем выделите появится нижнее меню, выберите опцию Sort & Filter по нему и «кран» на Возрастание или по убыванию, в зависимости от того, если вы хотите изменить порядок значений от А до Z или Z до A.

       На таблетках, интерфейс Excel практически идентичен настольный коллега приложения. Это означает, что иметь значения столбца в алфавитном порядке, вы должны сделать, это выбрать его, нажмите кнопку AZ значок, который расположен в правом верхнем углу и выберите Восходящий (AZ порядке) или по убыванию (ZA Order ) из меню, которое появляется.

   Если какой-либо шаг не ясно, и / или хотите больше информации о том, как сортировать значения в листах Excel, см официальной документации приложения доступны на веб-сайте Microsoft.

Правила оформления заказа

Свод ключевых рекомендаций для формирования заказа на разработку

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

  1. Коротко (1-2 предложения) опишите цель/назначение создаваемой программы (что программа должна делать).
  2. Укажите, какие файлы используются в качестве исходных данных для создаваемой программы, их примеры и особенности.
  3. Конечный результат: примеры файлов, их описание и требования (пожелания) к функциональности.
  4. Логика работы программы: в какой последовательности что брать, какие данные пропускать, в какие ячейки вставлять значения, формулы расчета итогов и тд).
  5. Информация по срокам, контактные данные.

Да, скорее всего, и при реализации указанного примера будут вопросы и некоторые детали, требующие уточнения. Главное, что в целом понятна суть работы и есть ясная картина того, что надо делать.

При оформлении заказа, пожалуйста:

  1. прикрепляйте примеры файлов, из которых будет понятно, что есть и что необходимо получить в результате
  2. указывайте актуальную контактную информацию (номер телефона, ICQ, логин в скайпе, контактный email)
  3. указывайте сумму, которую вы готовы заплатить, если программа будет полностью соответствовать вашим пожеланиям

Внедрение современных WMS систем управления складом оправдано только при большом ассортименте и интенсивном товарообороте. При наличии всего нескольких операций в день и незначительной номенклатуре автоматизировать складские действия удобно с помощью таблицы учета товаров Excel. Функционал табличного редактора достаточен для упорядочивания приходно-расходных операций и вывода информации об остатках продукции.

Правила учета товара в экселе

Собственники магазинов зачастую сами пытаются организовать учет прихода и расхода товара в Excel. Для этого достаточно базовых умений работы с таблицами и минимальных усилий по самообучению нескольким новых функциям программы.

Учет товаров в эксель требует знания основных математических функций

Первоначальному формированию структуры файла Excel необходимо уделять особое внимание. Желательно предусмотреть в строке характеристик товаров большое количество столбцов для обозначения артикула, сорта, производителя и прочего. Ведь затем по каждому параметру можно будет настроить фильтр.

Не помешает наличие дополнительных полей и при записи приходно-расходных операций. В этом случае актуальны будут значения с ФИО ответственных за передачу продукции лиц, формой оплаты, датой истечения отсрочки и прочих.

При первоначальном заполнении таблицы учета прихода и расхода товара в Excel нужно провести в магазине инвентаризацию. После неё придется постоянно вести точные записи всех операций в хронологическом порядке. Ошибка в дате может привести к невозможности расчета формулы и сбою во всем файле. Поэтому ведением таблицы эксель для учета товара придется заниматься без перерыва.

Функционал таблицы учета товара в Excel, скачать которую можно в интернете, довольно слаб. Свободно распространяемые версии часто содержат скрытые формулы и им тяжело обучаться.

Интерфейс таблицы учета товара в эксель не должен быть сливающимся

Базовыми возможностями таблиц складского учета являются:

  1. Запись параметров приходных и расходных документов, количества указанного в них товара, его цены.
  2. Отображение текущих остатков по каждой номенклатурной позиции.
  3. Ведение справочников товаров для автоматизации заполнения граф.
  4. Формирование оборотной ведомости.
  5. Редактирование торговых наценок.

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

  1. Печать ордеров на основе выбранных документов.
  2. Отображение валовой прибыли за период.
  3. Возможность отображения скидок.
  4. Формирование актуального прайса на основе остатков товара.
  5. Ведение клиентской базы.

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

Составление таблицы учета товара Excel

Обычная таблица учета товара в Excel, шаблон которой будет разобран далее, представляет собой не самую сложную конструкцию. Для её грамотного составления понадобится 1-2 дня времени, наличие базы клиентов, товаров и остатков продукции. Не помешает привлечение к этому процессу опытных пользователей Excel, что значительно ускорит достижение цели и позволит избежать грубых ошибок.

Создание справочников

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

Справочник представляет собой расположенный построчно список с шаблонной информацией. В шапке указываются обозначения столбцов. Верхнюю строку нужно зафиксировать с помощью меню «Вид»-«Закрепить области». В этом случае обозначения столбцов будут всегда видны сверху, а список можно будет свободно перелистывать вниз.

Справочник покупателей в таблице эксель для учета товаров

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

Справочник номенклатуры товаров в таблице эксель

Оформление справочников, их заголовков в таблице учета магазина рекомендуется осуществлять с использованием разных цветов и шрифтов. Это позволяет быстрее фиксировать взгляд на нужных данных и ускоряет работу.

Формирование выпадающих списков

Чтобы при заполнении приходных документов каждый раз не вводить наименование поставщика или товара, настраивается автоматизированный выбор этих значений из списка справочника. Для этого используется команда «Данные»-«Проверка данных». В появившемся окне выбираем тип данных «Список», а затем в поле источник указываем полный перечень значений из справочника. После этого в ячейке появится возможность выбирать параметр из выпадающего списка.

Меню выбора источника данных для выпадающего списка

Не нужно забывать настраивать формат отображаемых данных, чтобы понимать, в каких единицах измерения ведется учет товаров в эксель.

Однако при заполнении приходных или расходных документов некоторые значения всё же придется забивать руками.

Использование впадающего списка при заполнении номенклатуры продукции

К ним относятся:

  • дата документа;
  • количество товара;
  • номер документа;
  • прочие часто меняющиеся параметры.

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

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

Указанным выше образом формируются листы также «Приход» и «Расход». Их отдельное ведение удобно для последующего быстрого поиска нужного документа.

Формирование оборотной ведомости

В таблице учета товара Excel, пример которой приведен выше, не обойтись без формирования оборотной ведомости за период. Для этого используется функция СУММЕСЛИМН и другие математические алгоритмы. Инструкцию по работе с теми или иными инструментами Excel всегда можно посмотреть в интернете на официальном сайте программы. 

Пример оборотной ведомости в таблице товарного учета

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

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

Отслеживание критических остатков

Ведение учета товара в магазине в Excel можно настроить таким образом, чтобы на листе с остатками продукции выводилась информация и о необходимости закупки той или иной позиции ассортимента. Далее будет рассмотрен простейший пример, как оформить это в табличном редакторе.

Автоматическое определение экселем необходимости пополнения складских запасов

В предложенном примере имеется три места хранения товара с указанием остатков в каждом из них. С помощью функции ЕСЛИ(ИЛИ…) можно настроить автоматическую проверку соблюдения нормы запаса по каждому складу. Итоговая формула будет выглядеть следующим образом:

ЕСЛИ(ИЛИ(C3

Складской учет в Excel подходит для любой торговой или производственной организации, где важно учитывать количество сырья и материалов, готовой продукции. С этой целью предприятие ведет складской учет. Крупные фирмы, как правило, закупают готовые решения для ведения учета в электронном виде. Вариантов сегодня предлагается масса, для различных направлений деятельности.

На малых предприятиях движение товаров контролируют своими силами. С этой целью можно использовать таблицы Excel. Функционала данного инструмента вполне достаточно. Ознакомимся с некоторыми возможностями и самостоятельно составим свою программу складского учета в Excel.

В конце статьи можно скачать программу бесплатно, которая здесь разобрана и описана.

Как вести складской учет в Excel?

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

  1. Заполнять справочники максимально точно и подробно. Если это номенклатура товаров, то необходимо вносить не только названия и количество. Для корректного учета понадобятся коды, артикулы, сроки годности (для отдельных производств и предприятий торговли) и т.п.
  2. Начальные остатки вводятся в количественном и денежном выражении. Имеет смысл перед заполнением соответствующих таблиц провести инвентаризацию.
  3. Соблюдать хронологию в регистрации операций. Вносить данные о поступлении продукции на склад следует раньше, чем об отгрузке товара покупателю.
  4. Не брезговать дополнительной информацией. Для составления маршрутного листа водителю нужна дата отгрузки и имя заказчика. Для бухгалтерии – способ оплаты. В каждой организации – свои особенности. Ряд данных, внесенных в программу складского учета в Excel, пригодится для статистических отчетов, начисления заработной платы специалистам и т.п.

Однозначно ответить на вопрос, как вести складской учет в Excel, невозможно. Необходимо учесть специфику конкретного предприятия, склада, товаров. Но можно вывести общие рекомендации:

  1. Для корректного ведения складского учета в Excel нужно составить справочники. Они могут занять 1-3 листа. Это справочник «Поставщики», «Покупатели», «Точки учета товаров». В небольшой организации, где не так много контрагентов, справочники не нужны. Не нужно и составлять перечень точек учета товаров, если на предприятии только один склад и/или один магазин.
  2. При относительно постоянном перечне продукции имеет смысл сделать номенклатуру товаров в виде базы данных. Впоследствии приход, расход и отчеты заполнять со ссылками на номенклатуру. Лист «Номенклатура» может содержать наименование товара, товарные группы, коды продукции, единицы измерения и т.п.
  3. Поступление товаров на склад учитывается на листе «Приход». Выбытие – «Расход». Текущее состояние – «Остатки» («Резерв»).
  4. Итоги, отчет формируется с помощью инструмента «Сводная таблица».

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

Теперь независимо от количества записей пользователь будет видеть заголовки столбцов.

Таблица Excel «Складской учет»

Рассмотрим на примере, как должна работать программа складского учета в Excel.

Делаем «Справочники».

Для данных о поставщиках:

* Форма может быть и другой.

Для данных о покупателях:

* Обратите внимание: строка заголовков закреплена. Поэтому можно вносить сколько угодно данных. Названия столбцов будут видны.

Для аудита пунктов отпуска товаров:

Еще раз повторимся: имеет смысл создавать такие справочники, если предприятие крупное или среднее.

Можно сделать на отдельном листе номенклатуру товаров:

В данном примере в таблице для складского учета будем использовать выпадающие списки. Поэтому нужны Справочники и Номенклатура: на них сделаем ссылки.

Диапазону таблицы «Номенклатура» присвоим имя: «Таблица1». Для этого выделяем диапазон таблицы и в поле имя (напротив строки формул) вводим соответствующие значение. Также нужно присвоить имя: «Таблица2» диапазону таблицы «Поставщики». Это позволит удобно ссылаться на их значения.

Для фиксации приходных и расходных операций заполняем два отдельных листа.

Делаем шапку для «Прихода»:

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

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

Создаем выпадающий список для столбца «Наименование». Выделяем столбец (без шапки). Переходим на вкладку «Данные» — инструмент «Проверка данных».

В поле «Тип данных» выбираем «Список». Сразу появляется дополнительное поле «Источник». Чтобы значения для выпадающего списка брались с другого листа, используем функцию: =ДВССЫЛ(«номенклатура!$A$4:$A$8»).

Теперь при заполнении первого столбца таблицы можно выбирать название товара из списка.

Автоматически в столбце «Ед. изм.» должно появляться соответствующее значение. Сделаем с помощью функции ВПР и ЕНД (она будет подавлять ошибку в результате работы функции ВПР при ссылке на пустую ячейку первого столбца). Формула: .

По такому же принципу делаем выпадающий список и автозаполнение для столбцов «Поставщик» и «Код».

Также формируем выпадающий список для «Точки учета» — куда отправили поступивший товар. Для заполнения графы «Стоимость» применяем формулу умножения (= цена * количество).

Формируем таблицу «Расход товаров».

Выпадающие списки применены в столбцах «Наименование», «Точка учета отгрузки, поставки», «Покупатель». Единицы измерения и стоимость заполняются автоматически с помощью формул.

Делаем «Оборотную ведомость» («Итоги»).

На начало периода выставляем нули, т.к. складской учет только начинает вестись. Если ранее велся, то в этой графе будут остатки. Наименования и единицы измерения берутся из номенклатуры товаров.

Столбцы «Поступление» и «Отгрузки» заполняется с помощью функции СУММЕСЛИМН. Остатки считаем посредством математических операторов.

Скачать программу складского учета (готовый пример составленный по выше описанной схеме).

Вот и готова самостоятельно составленная программа.

В этой записи расскажем Вам, как можно настроить выгрузку прайс-листов в формате xlsm, в которых будет страница ЗАКАЗ. Страница ЗАКАЗ будет отображать все выбранные Вашим клиентом позиции и дополнительно может сохраняться в отдельный файл.

Просьба реализовать данный функционал поступала от разных клиентов. Основное неудобство: если у Вас прайс-лист очень большой и содержит больше одной страницы — очень сложно понять какие позиции были выбраны. Именно с помощью страницы ЗАКАЗ можно упростить анализ выбранных позиций.

Пример страницы ЗАКАЗ с выводом выбранных позиций:

А ниже показан пример работы клиента с прайс-листом, в котором есть страница ЗАКАЗ:

Полный обзор функционала в нашем видео:

Для начала нужно указать, что выгрузка будет в формате xlsm (с поддержкой макросов):

На странице заказа по умолчанию отображаются все колонки прайс-листа. Но Вы сможете самостоятельно исключить некоторые колонки с помощью галочки «Не добавлять колонку в заказ». Дополнительно для каждой колонки можно установить галочку «Добавить итог по колонке» — по этой колонке на странице заказа будет рассчитывать общая сумма по выбранным позициям.

Теперь нам осталось только включить добавление страницы ЗАКАЗ в прайс-лист и назначить кнопки на функционал. Колонка «Количество» — это колонка прайс-листа, в которой Ваш клиент вводит необходимое количество товара (выбирается из колонок прайс-листа). Также Вы указываете кнопки формирования заказа и кнопки сохранения заказа:

Мы специально реализовали кнопки в виде отдельного справочника — чтобы Вы могли настроить оформление кнопок под оформление Вашего прайс-листа. В каждой кнопке есть возможность настроить заголовок, цвет фона и цвет текста, шрифт. А также указать размеры кнопки и ее расположение на странице заказа:

На этом вся настройка закончена — при выгрузке прайс-листа Вы получите уникальный прайс-лист, который будет выделяться среди Ваших конкурентов и приносить Вам продажи. Если у Вас остались вопросы по функционалу — пишите в чат на этой странице!

Наши разработки:

Будем считать, что наша условная организация занимается поставками покупателям дорогостоящей строительной техники. Кроме непосредственно поставок, еще один из участков деятельности связан с ее ремонтом. Разрабатываемая далее книга Microsoft Excel будет включать несколько листов данных и несколько листов управления. Исходная ситуация такова: мы располагаем рядом клиентов (заказчиков), которые обращаются к нам по поводу ремонта проданной им техники (ремонт в течение гарантийного срока является вполне нормальным делом).

Технически сам ремонт, как правило, связан с заменой большого количества деталей. С учетом этого, очевидно, что существуют определенные трудности работы персонала, связанные с обеспечением хранения и извлечения необходимой информации по договорам с клиентами, а также с формированием отчетов по клиентам и договорам. В рабочей книге Microsoft Excel мы разработаем единую информационную базу, которая позволит существенно облегчить труд сотрудников офиса. Это облегчение работы будет достигнуто за счет размещения в книге элементов управления и последующего их программирования.

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

Рис. 3.1. Справочная информация о клиентах

Рис. 3.1. Справочная информация о клиентах

В верхней части листа располагается кнопка для ввода очередной записи о новой фирме. Конечно, пользователь, при появлении у нашей организации очередного партнера, может непосредственно внести информацию о нем в очередную свободную строку. Однако для удобства, с одной стороны, и контроля возможных технических ошибок, с другой, мы разработаем более удобную технологию.

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

Рис. 3.2. Форма ввода информации о клиентах

Рис. 3.2. Форма ввода информации о клиентах

Таким образом, наша ближайшая цель — создать форму ввода (рис. 3.2) и расположить на ней необходимые элементы управления. С формами мы еще не сталкивались, поэтому рассмотрим процесс их создания более подробно. Для создания пользовательской формы необходимо перейти в окно редактора Visual Basic. Здесь требуется воспользоваться разделом UserForm в меню Insert (рис. 3.3). В результате на экране появится новая форма, которая фактически представляет собой контейнер для размещения на ней необходимых элементов управления.

Рис. 3.3. Пользовательская форма в среде Microsoft Visual Basic

Рис. 3.3. Пользовательская форма в среде Microsoft Visual Basic

У формы, как и у любого элемента управления, есть свойства. Для того чтобы открыть окно свойств, следует воспользоваться разделом Properties Window из меню View. Изменим значение Name на Client, а также значение свойства CaptionФорма для ввода нового клиента. В результате в заголовке формы будет отражен новый текст. Что касается свойства Name, то оно нам понадобится при работе с формой (при активизации формы).

Далее расположим на форме необходимые элементы управления. Для этого сначала необходимо отобразить на экране панель инструментов (View ► Toolbox). В соответствии с рис. 3.2 на форме нам следует разместить 7 элементов управления типа Label (надпись) и 7 элементов TextBox (текстовое окно). При этом значения свойства Name для надписей принципиального значения не имеют, так как программно мы обращаться к ним не будем. Для этих элементов выберите рассматриваемые значения произвольно (главное, чтобы не было повторяющихся имен — иначе среда Microsoft Visual Basic обратит на это внимание). Аналогичное свойство для текстовых окоп лам потребуется в программных процедурах, поэтому в табл. 3 приведены значения свойства Name текстовых окон, которые следует установить.

Таблица 3.1. Значения свойства Name текстовых окон

Подпись Name
Код Cod
Название фирмы Firma
Адрес Adress
Телефон Tel
Факс Fax
ИНН Inn
КПП Kpp

От пользователя требуется внести информацию в текстовые окна, расположенные на форме, после чего щелкнуть на кнопке Внести. Это приводит к выполнению процедуры, которая должна предварительно проверить корректность вводимых данных. Если на листе запись с указанным кодом фирмы уже существует, то процедура обратит на это внимание. Также процедура обратит внимание, если на листе уже присутствует фирма с аналогичным названием и с тем же указанным адресом. Текст данной процедуры приведен в листинге 3.1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
' Листинг 3.1. Обработка щелчка на кнопке Внести на форме
Private Sub CommandButton1_Click()
If Cod.Text = "" Then
    MsgBox ("Поле КОД необходимо заполнить")
    Exit Sub
End If
Nom = 0
While Worksheets("Клиенты").Cells(Nom + 2, 2).Value <> ""
    Nom = Nom + 1
Wend
For i = 1 To Nom
    If CStr(Worksheets("Клиенты").Cells(i + 1, 2).Value = _
    CStr(Firma.Text) And _
    CStr(Worksheets("Клиенты").Cells(i + 1, 3).Value) = _
    CStr(Adress.Text)) Then
     MsgBox ("Такой код фирмы уже встречался")
     Exit Sub
    End If
Next
Worksheets("Клиенты").Cells(i + 1, 1).Value = Cod.Text
Worksheets("Клиенты").Cells(i + 1, 2).Value = Firma.Text
Worksheets("Клиенты").Cells(i + 1, 3).Value = Adress.Text
Worksheets("Клиенты").Cells(i + 1, 4).Value = Tel.Text
Worksheets("Клиенты").Cells(i + 1, 5).Value = Fax.Text
Worksheets("Клиенты").Cells(i + 1, 6).Value = Inn.Text
Worksheets("Клиенты").Cells(i + 1, 7).Value = Kpp.Text
    MsgBox ("Информация внесена")
Client.Hide
End Sub

Новый момент связал с предпоследней строкой текста в листинге 3.1. Здесь для формы Client применяется метод Hide, который приводит к закрытию этой формы. Разумеется, ее необходимо сначала отобразить, и об этом мы еще не упоминали. В листинге 3.2 приведена процедура, которая выполняется по щелчку на кнопке Ввести нового клиента (см. рис. 3.1). Здесь для отображения на экране формы Client используется метод Show.

1
2
3
4
' Листинг 3.2. Обработка щелчка на кнопке Ввести нового клиента
Private Sub CommandButton1_Click()
	Client.Show
End Sub

На рис. 3.4 приведен результат заполнения формы данными об очередной фирме. Теперь щелчком на кнопке Внести это данные переносятся на текущий рабочий лист (в очередную свободную строку).

Рис. 3.4. Внесение информации о новом клиенте

Рис. 3.4. Внесение информации о новом клиенте

Перейдем к разработке еще двух листов. Один из них под названием Номенклатура показан на рис. 3.5. В каждой строке листа располагается название конкретной запасной части. Значение в столбце Номер запчасти позволяет однозначно ее идентифицировать.

Рис. 3.5. Информация о номенклатуре

Рис. 3.5. Информация о номенклатуре

Лист Номенклатура является справочным и не содержит элементов управления. Технически пользователь просто вручную заполняет данный прайс-лист. Еще один лист, который также не содержит элементов управления, показан на рис. 3.6. Здесь содержится информация о заказах — названиях и их составе. Столбец А предназначен для уникального кода каждого заказа. Далее располагаются поля для отображения даты заказа и кода фирмы (по коду фирмы легко определить необходимые реквизиты организации).

Рис. 3.6. Лист для хранения информации о заказах

Рис. 3.6. Лист для хранения информации о заказах

Начиная с пятого столбца размещается информация о запасных частях, которые входят в заказ. Структура этой информации выглядит следующим образом: в пятом столбце код запчасти, далее в шестом количество таких запчастей в заказе, затем в седьмом столбце код другой запчасти, и далее их количество. Таким образом, в каждой строке перечисляется все содержимое определенного заказа. Понятно, что вручную заполнять подобную информацию не слишком удобно. Для этого мы создадим специальный лист с необходимыми элементами управления. В результате будет обеспечено удобство для пользователя, а также контроль уникальности кода заказа. Лист, который будет выполнять необходимый «функционал», показан на рис. 3.7. В качестве названия листа выберем Бланк для нового заказа.

Рассмотрим организацию листа Бланк для нового заказа и техническую работу пользователя с ним. Ячейка C1 отводится для номера заказа. Ниже поясняющего текста Заказчик (расположенного в ячейке А1) располагается элемент управления «Поле со списком». В качестве значения свойства Name этого элемента управления выбрано Firma. Ниже поясняющего текста Список запчастей располагается еще один элемент управления «Поле со списком». В качестве значения свойства Name выбрано Spk.

Щелчком на определенной запчасти она включается в заказ, который формируется с 11-й строки на данном листе. Столбцы Номер запчасти, Наименование и Цена заполняются исходя из имеющейся информации на листе Номенклатура. Пользователю следует лишь внести количество единиц указанной детали в перечне запасных частей. Для этого предназначено текстовое окно (Name — Col) с надписью выше — Количество. После этого осталось щелкнуть на кнопке Включить (Name — InputNom), и в очередную свободную строку на данном листе запишется новая позиция заказа.

Рис. 3.7. Лист для формирования заказа

Рис. 3.7. Лист для формирования заказа

После того как список запасных частей таким образом заполнен и номер заказа указан, осталось щелкнуть на кнопке Включить в список заказов. В качестве значения свойства Name этой кнопки выбрано InputSpk. За счет программной процедуры это приводит к переносу информации о заказе на лист Названия заказов. Таким образом, теперь можно перейти к рассмотрению процедур, которые обеспечивают выполнение описанных действий. Когда пользователь в процессе работы с книгой переходит на лист Бланк для нового заказа, списки заказчиков и запасных частей должны быть заполнены. Проще всего это обеспечить с помощью процедуры, выполняемой при активизации листа, которая представлена в листинге 3.3.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
' Листинг 3.3. Процедура, выполняемая при активизации листа
Private Sub Worksheet_Activate()
Firma.Clear
N = 0
While Worksheets("Клиенты").Cells(N + 2, 1).Value <> ""
    N = N + 1
Wend
For i = 1 To N
    Firma.AddItem Worksheets("Клиенты").Cells(i + 2, 2).Value
Next
Spk.Clear
N = 0
While Worksheets("Nomen").Cells(N + 2, 1).Value <> ""
    N = N + 1
Wend
For i = 1 To N
    Spk.AddItem Worksheets("Nomen").Cells(i + 1, 1).Value + _
    "" + Worksheets("Номенклатура").Cells(i + 1, 2).Value + "" + _
    CStr(Worksheets("Номенклатура").Cells(i + 1, 3).Value) + "руб."
Next
End Sub

Приведенная процедура заполнения полей со списками организаций и запчастей похожа на рассмотренные ранее примеры и не требует комментария. Более интересна следующая процедура (листинг 3.4), которая выполняется при щелчке на кнопке Включить.

1
2
3
4
5
6
7
8
9
10
11
12
' Листинг 3.4. Процедура обработки щелчка на кнопке Включить
Private Sub InputNom_Click()
Nom = Spk.ListIndex
N = 0
While Cells(N + 11, 1).Value <> ""
    N = N + 1
Wend
Cells(N + 11, 1) = Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 1)
Cells(N + 11, 2) = Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 2)
Cells(N + 11, 3) = Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 3)
Cells(N + 11, 4) = Col.Text
End Sub

Здесь в переменную Nom заносится индекс (номер) элемента, который выделен в элементе управления «Поле со списком», отведенном для запасных частей. Далее подсчитывается число уже заполненных позиций в заказе — они располагаются начиная с 11-й строки. После этого в следующую свободную строку заносится очередная запись. При этом количество единиц указанной позиции заказа извлекается из содержимого текстового окна Col.

Теперь на очереди другая процедура (листинг 3.5), которая переносит информацию с листа Бланк для нового заказа на лист Названия заказов, о котором мы уже говорили. В начале процедуры InputSpk_Click() предварительно проверяется — внесена ли информация в ячейку C1. Далее производится поиск присутствия заказа с указанным на листе номером. В случае положительного ответа на этот вопрос процедура не производит запись, а возвращает пользователя к работе с листом формирования нового заказа. В случае уникальности нового номера заказа процедура последовательно переносит имеющуюся информацию в каталог заказов. Для формирования даты используется стандартная функция VBA Date.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
' Листинг 3.5. Процедура обработки щелчка на кнопке Включить в список заказов
Private Sub InputSpk_Click()
' Номер потенциального заказа
VerZakaz = CStr(Range("C1").Value)
If VerZakaz = "" Then
    MsgBox ("Поле кода заказа необходимо заполнить")
    Exit Sub
End If
If Firma.ListIndex = -1 Then
    MsgBox ("Необходимо указать фирму")
    Exit Sub
End If
' Извлечение информации о коде фирмы
CodFirma = Worksheets("Клиенты").Cells(Firma.ListIndex + 2, 1).Value
' Подсчет числа имеющихся заказов
N = 0
While Worksheets("Названия заказов").Cells(N + 2, 1).Value <> ""
    N = N + 1
Wend
' Проверка возможного повтора номера заказа
For i = 1 To N
    CodList = Worksheets("Названия заказов").Cells(i + 1, 1).Value
    If CStr(CodList) = VerZakaz Then
    MsgBox ("Такой номер заказа уже встречался")
    Exit Sub
    End If
Next
' Запись информации о данном заказе
Worksheets("Названия заказов").Cells(N + 2, 1).Value = Range("C1").Value
' Использование стандартной функции для получения даты
Worksheets("Названия заказов").Cells(N + 2, 2).Value = Date
Worksheets("Названия заказов").Cells(N + 2, 3).Value = CodFirma
' Вводим переменную для подсчета суммы
NDetal = 0
While Cells(NDetal + 11, 2).Value <> ""
    NDetal = NDetal + 1
Wend
' Подсчет числа деталей в заказе
SymmaItog = 0
For i = 1 To NDetal
Worksheets("Названия заказов").Cells(N + 2, 5 + (i - 1) * 2).Value = _
Cells(i + 10, 1).Value
Worksheets("Названия заказов").Cells(N + 2, 5 + (i - 1) * 2 + 1).Value = _
Cells(i + 10, 4).Value
SymmaItog = SymmaItog + CLng(Cells(i + 10, 4).Value) * _
CLng(Cells(i + 10, 3).Value)
Next
Worksheets("Названия заказов").Cells(N + 2, 4).Value = SymmaItog
    MsgBox ("Заказ включен")
End Sub

Таким образом, мы обеспечили удобный механизм внесения информации в лист Названия заказов. На рис. 3.8 показан результат ввода двух заказов на запасные части.

Рис. 3.8. Пример формирования заказов

Рис. 3.8. Пример формирования заказов

Перейдем к отчетам, и один из них показан на рис. 3.9. На этом листе часть информации статична (заголовок и подписи столбцов), а ряд ячеек заполняется исходя из содержания конкретного заказа, которое зафиксировано на листе Названия заказов.

Рис. 3.9. Отчет о заказе

Рис. 3.9. Отчет о заказе

Нам требуется программно обеспечить заполнение ячеек листа, отводимых для номера заказа, заказчика, а также заполнение адреса, телефона и факса. Табличная часть на рис. 3.9 используется в случае, если число позиций в заказе не превышает трех. В противном случае данная табличная часть не заполняется, а создается другой документ — Приложение (рис. 3.10). Наша задача — обеспечить данные функциональные особенности разрабатываемой книги.

Рис. 3.10. Приложение к отчету о заказе

Рис. 3.10. Приложение к отчету о заказе

Для заполнения отчета о заказе (и при необходимости приложения к нему) па листе Названия заказов создадим кнопку Создать отчет (см. рис. 3.8). По нажатию этой кнопки будет открываться форма, где от пользователя требуется выбрать заказ, по которому необходимо сформировать отчет. На рис. 3.11 показана данная форма ввода в окне редактора Visual Basic.

Процедура, вызываемая щелчком на кнопке Создать отчет, представлена в листинге 3.6. Ее назначение — открыть форму, обеспечивающую необходимый интерфейс для формирования отчета (см. рис. 3.11).

1
2
3
4
' Листинг 3.6. Процедура обработки щелчка на кнопке Создать отчет
Private Sub CommandButton1_Click()
	Zakaz.Show
End Sub

Рис. 3.11. Форма выбора заказа для отчета

Рис. 3.11. Форма выбора заказа для отчета

В листинге 3.7 приведена процедура, которая выполняется при активизации формы. Ее назначение заключается в заполнении элемента управления «Поле со списком». При этом сначала подсчитывается количество заказов, уже имеющихся в базе данных. Информация о том, какая фирма его сделала, расположена на листе Клиенты. Поэтому для заполнения поля со списком на рис. 3.11 необходимо обратиться к информации о клиентах.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
' Листинг 3.7. Процедура, выполняемая при активизации формы
Private Sub UserForm_Activate()
' Подсчет числа заказов
Nom = 0
While Worksheets("Названия заказов").Cells(Nom + 2, 1).Value <> ""
    Nom = Nom + 1
Wend
' Подсчет числа фирм
Nfir = 0
While Worksheets("Клиенты").Cells(Nfir + 2, 1).Value <> ""
    Nfir = Nfir + 1
Wend
' Очистка и последующее заполнение поля со списком
Spk.Clear
' Перебор числа заказов
For i = 1 To Nom
' Извлечение кода фирмы
NomFirma = Worksheets("Названия заказов").Cells(i + 1, 3).Value
    For j = 1 To Nfir
    If NomFirma = Worksheets("Клиенты").Cells(j + 1, 1).Value Then
    Firma = Worksheets("Клиенты").Cells(j + 1, 2).Value
    ' При нахождении фирмы выход из цикла
    Exit For
    End If
    Next
Spk.AddItem CStr(Worksheets("Названия заказов").Cells(i + 1, 1).Value) _
+ " " + CStr(Worksheets("Названия заказов").Cells(i + 1, 2).Value) _
+ " " + CStr(Firma)
Next
End Sub

Теперь пользователь должен выбрать интересующую его фирму (рис. 3.12). Следующая процедура — обработка щелчка на кнопке Заполнить акт и приложение. Учитывая сложность полного программного кода, приведем его сначала для варианта заполнения только листа АКТ (листинг 3.8).

Рис. 3.12. Выбор заказа для отчета

Рис. 3.12. Выбор заказа для отчета

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
' Листинг 3.8. Процедура обработки щелчка на кнопке Заполнить акт и приложение
Private Sub CommandButton1_Click()
' Определяем индекс выбранного заказа в списке
NomSpk = Spk.ListIndex
' Подсчет количества деталей в выбранном заказе
ColDet = 0
While Worksheets("Название заказа").Cells(NomSpk + 2, _
5 + ColDet * 2).Value <> ""
    ColDet = ColDet + 1
Wend
' Подсчет количества позиций деталей по прайсу
NPrais = 0
While Worksheets("Номенклатура").Cells(NPrais + 2, _
1).Value <> ""
    NPrais = NPrais + 1
Wend
' Подсчет числа фирм
NFirm = 0
While Worksheets("Клиенты").Cells(NFirm + 2, 1).Value <> ""
    NFirm = NFirm + 1
Wend
' Извлекаем код фирмы в выбранном заказе
CodFirm = Worksheets("Название заказа").Cells(NomSpk + 2, 3).Value
For i = 1 To NFirm
' Нахождение реквизитов фирмы по ее коду
If CodFirm = Worksheets("Клиенты").Cells(i + 1, 1).Value Then
    Название заказа = Worksheets("Клиенты").Cells(i + 1, 2).Value
    Adr = Worksheets("Клиенты").Cells(i + 1, 3).Value
    Tel = Worksheets("Клиенты").Cells(i + 1, 4).Value
    Fax = Worksheets("Клиенты").Cells(i + 1, 5).Value
    Exit For
End If
Next
' Внесение найденных реквизитов в поля на листе АКТ
Worksheets("Акт").Cells(6, 3).Value = Nazv
Worksheets("Акт").Cells(7, 3).Value = "ADRES:" + Adr
Worksheets("Акт").Cells(8, 3).Value = "telefon:" + Tel
Worksheets("Акт").Cells(9, 3).Value = "phaks:" + Fax
Worksheets("Акт").Cells(6, 5).Value = _
Worksheets("Название заказа").Cells(NomSpk + 2, 1)
' Очистка области для перечня запасных частей
Worksheets("Акт").Range("A13:F15") = ""
' Заполнение табличной части листа АКТ
If ColDet < 4 Then
    For i = 1 To ColDet
' Формирование порядкового номера перечня
Worksheets("Акт").Cells(i + 12, 1).Value = i
Worksheets("Акт").Cells(i + 12, 2).Value = _
Worksheets("Название заказа").Cells(NomSpk + 2, _
5 + (i - 1) * 2).Value
For j = 1 To NPrais
If CStr(Worksheets("Акт").Cells(i + 12, 2).Value) = _
CStr(Worksheets("Номенклатура").Cells(j + 1, 1).Value) Then
Nazvanie = CStr(Worksheets("Номенклатура").Cells(j + 1, 2).Value)
Tarif = CStr(Worksheets("Номенклатура").Cells(j + 1, 3).Value)
Exit For
End If
Next
Worksheets("Акт").Cells(i + 12, 3).Value = Nazvanie
Worksheets("Акт").Cells(i + 12, 5).Value = Tarif
Worksheets("Акт").Cells(i + 12, 4).Value = _
Worksheets("Название заказа").Cells(NomSpk + 2, _
5 + (i - 1) * 2 + 1).Value
Worksheets("Акт").Cells(i + 12, 6).Value = Tarif * _
Worksheets("Акт").Cells(i + 12, 4).Value
Next
End If
Hide
End Sub

На рис. 3.9 мы уже видели заполненный лист АКТ для небольшого (не превышающего трех) числа запасных частей в заказе. Следует обратить внимание на ряд фрагментов процедуры, приведенной в листинге 3.8. Так, из третьего столбца строки выбранного заказа извлекается код фирмы-заказчика:

1
CodFirm = Worksheets("Названия заказов").Cells(NomSpk + 2, 3).Value.

Далее по коду фирмы с листа Клиенты извлекается информация о заказчике, которая далее переносится на лист АКТ. После этого производится заполнение табличной части. Здесь мы реализовали только ситуацию, когда количество деталей не превышает трех:

С учетом ранее рассмотренной организации листа Клиенты информация о кодах запасных частей располагается начиная с 5-го столбца. Поэтому следующая конструкция позволяет получить данные о составе заказа:

1
2
Worksheets("Названия заказов").Cells(NomSpk + 2,
5 + (i - 1) * 2).Value.

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
' Листинг 3.9. Изменение процедуры щелчка на кнопке Заполнить акт и приложение
Private Sub CommandButton1_Click()
' Определяем индекс выбранного заказа в списке
NomSpk = Spk.ListIndex
' Подсчет количества деталей в выбранном заказе
ColDet = 0
While Worksheets("Названия заказов").Cells(NomSpk + 2, _
    5 + ColDet * 2).Value <> ""
    ColDet = ColDet + 1
Wend
' Подсчет количества позиций по прайсу
NPrais = 0
While Worksheets("Номенклатура").Cells(NFirm + 2, 1).Value <> ""
	NPrais = NPrais + 1
Wend
' Подсчет числа фирм
NFirm = 0
    NFirm = NFirm + 1
Wend
' Извлекаем код фирмы в выбранном заказе
CodFirm = Worksheets("Названия заказов").Cells(NomSpk + 2, 3).Value
For i = 1 To NFirm
' Нахождение реквизитов фирмы по ее коду
If CodFirm = Worksheets("Клиенты").Cells(i + 1, 1).Value Then
    Nazv = Worksheets("Клиенты").Cells(i + 1, 2).Value
    Adr = Worksheets("Клиенты").Cells(i + 1, 3).Value
    Tel = Worksheets("Клиенты").Cells(i + 1, 4).Value
    Fax = Worksheets("Клиенты").Cells(i + 1, 5).Value
    Exit For
End If
Next
' Внесение найденных реквизитов в поля на листе АКТ
    Worksheets("АКТ").Cells(6, 3).Value = Nazv
    Worksheets("АКТ").Cells(7, 3).Value = "Адрес:" + Adr
    Worksheets("АКТ").Cells(8, 3).Value = "Телефон:" + Tel
    Worksheets("АКТ").Cells(9, 3).Value = "Факс:" + Fax
    Worksheets("АКТ").Cells(6, 5).Value = _
    Worksheets("Названия заказов").Cells(NomSpk + 2, 1)
    Worksheets("Приложение").Cells(1, 6).Value = _
    Worksheets("Названия заказов").Cells(NomSpk + 2, 1)
    ' Очистка области для перечня запасных частей
    Worksheets("АКТ").Range("A13:F15") = ""
    Worksheets("Приложение").Range("A4:F100") = ""
If ColDet < 4 Then
    For i = 1 To ColDet
    Worksheets("АКТ").Cells(i + 12, 1).Value = i
    Worksheets("АКТ").Cells(i + 12, 2).Value = _
    Worksheets("Названия заказов").Cells(NomSpk + 2, _
    5 + (i - 1) * 2).Value
    For j = 1 To NPrais
    If CStr(Worksheets("АКТ").Cells(i + 12, 2).Value) = _
    CStr(Worksheets("Номенклатура").Cells(j + 1, 1).Value) Then
    Nazvanie = CStr(Worksheets("Номенклатура").Cells(j + 1, 2).Value)
    Tarif = CStr(Worksheets("Номенклатура").Cells(j + 1, 3).Value)
    Exit For
    End If
Next
    Worksheets("АКТ").Cells(i + 12, 3).Value = Nazvanie
    Worksheets("АКТ").Cells(i + 12, 5).Value = Tarif
    Worksheets("АКТ").Cells(i + 12, 3).Value = _
    Worksheets("Названия заказов").Cells(NomSpk + 2, _
    5 + (i - 1) * 2 + 1).Value
    Worksheets("АКТ").Cells(i + 12, 6).Value = _
    Worksheets("АКТ").Cells(i + 12, 4).Value * Tarif
Next
Else
    For i = 1 To ColDet
    Worksheets("Приложение").Cells(i + 3, 1).Value = i
    Worksheets("Приложение").Cells(i + 3, 2).Value = _
    Worksheets("Названия заказов").Cells(NomSpk + 2, _
    5 + (i - 1) * 2).Value
    For j = 1 To NPrais
    If CStr(Worksheets("Приложение").Cells(i + 3, 2).Value) = _
    CStr(Worksheets("Номенклатура").Cells(j + 1, 1).Value) Then
    Nazvanie = CStr(Worksheets("Номенклатура").Cells(j + 1, 2).Value)
    Tarif = CStr(Worksheets("Номенклатура").Cells(j + 1, 2).Value)
    Exit For
    End If
Next
    Worksheets("Приложение").Cells(i + 3, 3).Value = Nazvanie
    Worksheets("Приложение").Cells(i + 3, 5).Value = Tarif
    Worksheets("Приложение").Cells(i + 3, 4).Value = _
    Worksheets("Названия заказов").Cells(NomSpk + 2, _
    5 + (i - 1) * 2 + 1).Value
    Worksheets("Приложение").Cells(i + 3, 6).Value = _
    Worksheets("Приложение").Cells(i + 3, 4).Value * Tarif
Next
End If
Hide
End Sub

Рис. 3.13. Заполнение листа АКТ при большом перечне деталей

Рис. 3.13. Заполнение листа АКТ при большом перечне деталей

Рис. 3.14. Заполнение листа Приложение

Рис. 3.14. Заполнение листа Приложение

На рис. 3.13 и 3.14 приведено, соответственно, заполнение листов АКТ и Приложение при четырех позициях в заказе. В этом случае детали заказа включаются на лист Приложение.

Форма редактирования и просмотра заказа

Программа предназначена для работы с заказами, оформляемыми менеджерами на выставках.

Основные функции программы:

  • создание (заполнение) новых заказов
  • редактирование существующих заказов
  • объединение нескольких заказов в один
  • формирование заявки на продукцию на основании данных их сформированных заказов

Для каждого заказа предусмотрен выбор клиента из базы данных (если клиент новый, предусмотрено добавление информации о нём в базу) и ввод информации о заказе (место заказа, размер и дата предоплаты, и т.п.)

При запуске программы отображается панель инструментов, с которой доступны все основные функции:

Реализовано разграничение прав доступа (при запуске программа требует авторизации) — каждый менеджер может создавать заказы только от своего имени. Кроме того, при редактировании существующих заказов осуществляется фиксация фамилии менеджера, вносившего изменения в чужой заказ.

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

На вкладке «Настройки» пользователь может задать расположение файла базы данных, и папок с прайс-листами и изображениями. Кроме того, возможно включение режима расширенного меню (данная возможность предоставляется только после авторизации с правами администратора)

Посмотреть все скриншоты программы

 

Собственно имеется какой-то прайс с двумя колонками цен и соответственно кол-во заказа и итог.
Нужно сделать чтобы при Нажатии кнопки «Сформировать» создавался новый файл (название файла бралось с ячейки А1+дата на данный момент). В который переносятся только те позиции которые заказывает человек, в конце с итогами по двум колонкам Итог1 и Итог2.
Вот пытался делать, но не все получается. Затуп в названии файла и в том что 2 колонки.
Выкладываю два файла, исходный прайс, и то что я хотел бы видеть на выходе.

 

Karataev

Пользователь

Сообщений: 2306
Регистрация: 23.10.2014

Файл-результат создается в той же папке, где находится файл с макросом.

Изменено: Karataev07.06.2016 11:57:41

 

Karataev, вы сделали почти все, но макрос пропускает некоторые позиции.

Изменено: Алексей Евстратенко07.06.2016 15:59:41

 

Zoynels

Пользователь

Сообщений: 134
Регистрация: 14.11.2014

#4

07.06.2016 16:12:51

Алексей Евстратенко, поменяйте в макросе строку на:

Код
For i = 2 To UBound(mass, 1)
 

Karataev

Пользователь

Сообщений: 2306
Регистрация: 23.10.2014

Алексей Евстратенко, макрос пропускает в файле из поста 2 или в каком-то другом файле? Если в файле из поста 2, то напишите номер строки, которая не скопировалось. Если в другом файле, то тогда нужно посмотреть этот файл.

Zoynels прав, нужно сделать так, как в посте 4.

Изменено: Karataev07.06.2016 16:21:39

 

Zoynels, Вроде все работает.
Karataev, Спасибо за помощь, поправил 4 на 2 и все стало работать.
Подскажите как облагородить полученный файл. В том смысле где в коде ввести фиксированные данные организации. Где почитать про коды, которые влияют на форматирование ячеек и текста.?

 

На своем «тестовом» прайсе протестил, не работает. либо из-за того что встречает пустые ячейки, либо из-за чего-то другого. Хотелось бы чтобы колонки от J до O копировались тоже, где пустые, там пусто, где что-то есть, то копировало как есть, конечно при условии что заданно кол-во напротив.

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#8

07.06.2016 21:26:13

Цитата
Алексей Евстратенко написал: либо из-за чего-то другого.

Из-за того, что файл в #7 только издали похож на файл в #1.

 

Чем же он издали похож? По сути же одни и те-же колонки. Только что есть пробелы в строках.

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

Да всего лишь наличием столбца А. И диапазон, в итоге, формируетсяне так, как вы ожидали.

 

Я вроде и код меняю, но не пойму в чем затык.

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#12

07.06.2016 22:21:18

На столбец А зря погрешил, до него не доходит.

Код
Sub test()
    a = Range("B5").CurrentRegion.Rows.Count
    aa = Range("B5").CurrentRegion.Address
End Sub

CurrentRegion + F1 спасет отца русской демократии. :)

 

RAN, из всего этого ничего не понял) куда и что мне вставить) поясните если есть возможность

 

Очередная попытка) Исходный файл, и то что я хочу получить.
В добавлении всего неплохо бы переносить и форматирование ячеек как в исходном, а так все. Название фирмы если можно просто забить в код (оно фиксированное).

 

Поможет кто решить вопрос, или уже не ждать?

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

#16

08.06.2016 14:15:32

На листе «Прайс»

Код
Set rng = ThisWorkbook.Worksheets("Прайс").Range("B5").Resize(ThisWorkbook.Worksheets("Прайс").Range("B5").CurrentRegion.Rows.Count, 8)

CurrentRegion определяется не так вы желаете, поскольку в 4-ой строке есть данные.
Видимо об этом вам хотел сказать RAN в сообщении #12.
Прочитайте про CurrentRegion. Попробуйте вставить пустую строку между 4 и 5 строкой и изменить в коде Range(«B6»)

 

Алексей Евстратенко

Пользователь

Сообщений: 38
Регистрация: 16.07.2015

#17

08.06.2016 17:10:23

Цитата
Kuzmich написал:
Прочитайте про CurrentRegion. Попробуйте вставить пустую строку между 4 и 5 строкой и изменить в коде Range(«B6»)

не помогло

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#18

08.06.2016 20:02:21

Замените строку так

Код
Set rng = ThisWorkbook.Worksheets("Прайс").Range(ThisWorkbook.Worksheets("Прайс").Cells(5, "B"), ThisWorkbook.Worksheets("Прайс").Cells(Rows.Count, "B").End(xlUp)).Resize(, 7)

Эта ошибка уйдет.
Не зря в правилах написано «пример, максимально приближенный к реальному»

 

Алексей Евстратенко

Пользователь

Сообщений: 38
Регистрация: 16.07.2015

#19

08.06.2016 20:21:06

Цитата
RAN написал: Эта ошибка уйдет.

пишет что здесь не правильно

Код
For i = 3 To UBound(mass, 1)
 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

кто бы спорил, я не буду
эта ушла?
убирать друие — нужно вникать в код

хотя у меня тут не ругался, ругался дальше.
для устранения этого глюка, возможно, нужно перезапустить Excel.

либо ваш второй пример издали похож на ваш файл.

Изменено: RAN08.06.2016 20:59:26

 

Алексей Евстратенко

Пользователь

Сообщений: 38
Регистрация: 16.07.2015

#21

08.06.2016 21:18:37

Цитата
RAN написал: эта ушла?

этой и не было, просто команда не работает.

Цитата
RAN написал: для устранения этого глюка, возможно, нужно перезапустить Excel.

не помогло

Есть вариант формирования заказа другим образом. Это по кнопочке сформировать, «удаление всех изображений», «скрывание строк с пустым количеством» и сохранение файла с введеным именем+дата. Все это делается для того чтобы минимализировать сам заказ, т.к. прайс имеет много позиций, и при заказе просматривать не всегда удобно.

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

ну, не знаю. у меня чегой-то делает.
отключил сохранение и убрал лишний элемент массива

Прикрепленные файлы

  • Лист5.xlsx (8.45 КБ)

 

RAN, прикрепите переделанный файл

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

8-0   :D

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#25

08.06.2016 21:48:35

Цитата
Алексей Евстратенко написал:  RAN , прикрепите переделанный файл

Надо полагать, что это просьба ))

 

Алексей Евстратенко

Пользователь

Сообщений: 38
Регистрация: 16.07.2015

#26

08.06.2016 22:33:50

RAN,Спасибо большое)
Юрий М, конечно)

Изменено: Алексей Евстратенко12.06.2016 00:03:25

Понравилась статья? Поделить с друзьями:
  • Оформление задач рисунков в текстовом процессоре word
  • Оформление задач в excel
  • Оформление заголовков таблиц в excel
  • Оформление заголовков в таблице excel
  • Оформление заголовков в microsoft word