Урок 7. Подсчеты, обработка ошибок Err. Excel+VBA. Система учета Интернет-магазина
ฝัง
- เผยแพร่เมื่อ 12 เม.ย. 2018
- ПОЛНАЯ ПРОГРАММА УЧЕТА - 1excel.ru/magazin-vba-excel
Создание приложения системы учета интернет-магазина на базе Excel+VBA
В данном уроке делаем проверку полей на форме и подсчитываем сумму заказа
Предыдущие уроки:
Урок 1. Постановка задачи - goo.gl/JvMQAm
Урок 2. Дизайн и оформление - goo.gl/nJGzdw
Урок 3. Модуль Продажи (создаем UserForm) - goo.gl/3XN6H6
Урок 4. Пишем код (Теория+работа с формой) - • Урок 4. Пишем код (Тео...
Урок 5. Заполнение списков ComboBox - goo.gl/6bPDw6
Урок 6. Поиск артикула - goo.gl/Z23v37
Easy Excel - ПОЛНОЕ и ПОДРОБНОЕ обучение программы Excel для новичков и практиков! Уроки по макросам и VBA
Подписка на канал Easy Excel: / easyexcellesson
По больше видео таких. Что то уже начинает получатся.
Спасибо за крутые уроки. Скажите каким инструментом воспользоваться для заполнения определенных ячеек таблицы без добавления строк? Сейчас использую автоматическую форму которую создаёт excel.
Спасибо за видео. Файлик будет или старый обновился?
Спасибо за информативное видео. У меня вопрос: как добавить разделитель разрядов для чисел в числовых ячейках формы? Пример 10500 - 10 500.
Как настроить, чтоб числа в числовых ячейках формы отображались с право на лево?
Полезно пользоваться with. Чтобы не писать постоянно Sales, достаточно один раз написать в начале процедуры
Интересный вопрос: При открытии формы вставляем текущую дату. А как в поле Дата доставки поставить дату + 20 рабочих дней
Добрый день,
подскажите почему в форме макрос считает умножение, но не выводит в итоговый столбец экселя?
Уверен, что стоит сделать автозаполнение при вводе текста, уже внесенных записей, например, в графу поставщик.
У меня один вопрос: почему мой spinButton добавляет числа не в ту сторону?
Добрый день! У меня Spin_button добавляет число наоборот, то есть, если нажать вверх то количество уменьшается, а если нажать вниз - количество увеличивается. Как быть в таком случае?
для защиты от ошибок ввода лучше фильтровать значения прямо на вводе. примерно так:
On Error Resume Next
Select Case KeyAscii
Case 48 To 57, 8 ' цифры 0 - 9 и (эти символы всегда разрешены)
Case 44, 46 ' обработка десятичного разделителя (44 - код запятой, 46 - код точки)
KeyAscii = 46 ' если в поле введена запятая, то заменим ее на точку
If InStr(1, Me.ИМЯ_ПОЛЯ, ".") Then KeyAscii = 0 ' вторую точку нельзя
Case 45 ' дефис (минус перед числом)
If InStr(1, Me.ИМЯ_ПОЛЯ, "-") Then KeyAscii = 0 ' второй минус нельзя
If Me.ИМЯ_ПОЛЯ.SelStart Then KeyAscii = 0 ' минус допустим только перед числом
Case Else
KeyAscii = 0 ' остальные символы запрещены
End Select
проверка ставится на событие кейпрес для текстового поля и проверяет ввод чисел, десятичного разделителя и указателя отрицательного значения.
при этом пользователя абсолютно не напрягают сообщения об ошибках в всплывающих окнах - он просто не может ошибиться, как бы не старался.
А каким образом в формулах для вычисления используя значения ячеек умной таблицы и значения заносимые в форму
это вопрос?
Да конечно, интересует данная информация.
постарайтесь сформулировать ваш вопрос так, чтобы было понятно, что именно вы спрашиваете. если не понятно, о чем я говорю, то перечитайте то, что вы написали в виде вопроса.
Как посчитать разницу между тем числом, которое я сейчас ввожу в форму и числом, которое было введено раньше и уже находится в умной таблице? Например число "5" вношу в форму, а число "3" находится уже в таблице. Необходимо вычислить: 5-3=2. Результат "2" и число "5" затем заносится в таблицу, после нажатия кнопки "Сохранить" При чем Числа "3" и "5" располагаются в одном столбце, а результат "2" заносится в другой столбец. И так далее. Скажем следующее число будет "12", значит 12-5=7.
Помню, лет 5 назад сделал что-то похожее для выставок, чтобы быстро можно было сканером штрихкодов набирать товары, которые клиент выбрал, внесенные им предоплаты, контактные данные, видеть остатки и т.д. И помню встала серьезно проблема - как этой штукой пользоваться на выставке сразу нескольким менеджерам. Пробовал через яндекс.диск, файл лежал на сервере и менеджер со своим ноутом таскал файл оттуда, а после сохранял его - увы, но это было фиаско, братан, постоянно были ошибки одновременной работы. Тогда я понял, что у экселя есть потолок в этом плане. Нельзя его носить в кармане (в телефоне), и тем более пользоваться одновременно (без всяких там уведомлений об изменений файла, связи изменений и всякой лабуды) нескольким менеджерам, в отличии от облачных решений. И уже тогда начали набирать обороты фреймворки для PHP и др языков, что сильно упрощало разработку, которые очень сильно мне помогли в написании похожих приложений, но уже со всеми вытекающими преимуществами. Я думал, что уже не встречу коммерческих проектов для подобных задач на excel. Тем более, посмотрев на сайт этой компании сильно удивился и ассортименту и качеству сайта - весьма на высоком уровне. Как заказчик додумался до такого решения, имея столь качественный сайт? Хочу понять логику, потому что сам иногда думаю о многих плюшках, которые можно развернуть очень быстро прямо из эксель, но...
Как собираетесь обходить проблемы, которые появятся уже "завтра":
1. Программа обречена на использование одним работником, на одном компьютере?
2. Я так понял и информация о товарах и клиентах не будет синхронизироваться с сайтом, все копипастом?
3. Как сегодня обстоят дела с приспосабливаемостью программы к переезду на другие версии excel (или операционнной системы), в мое время это был кошмар (кнопки, ярлыки, библиотеки, кодировки)?
тут надо отметить существенную разницу подходов: написать ПО для себя и под заказ.
Excel - не многопользовательская программа. Это ее большой минус. В данном случае заказчик знал на что шел и понимал, что программой будет пользоваться один менеджер (каждый в свою смену). Как далее будут развиваться события нам не известно, но данного решения может хватит на некоторое время.
Есть плюсы экселя - доступность данных и простота их анализа (сводные отчеты, визуальное представление, графики и различные диаграммы), программу достаточно быстро и относительно недорого (это не программисты PHP) можно доработать
По проблемам.
1. Да, это правильно. Это минус.
2. Теоретически такую задачу можно решить и через API сделать интеграцию. Если заказчику будет нужно, то мы будем обсуждать такую доработку.
3. Кроме Excel 2003 на всех версиях должно работать корректно, проблем не возникнет с этим.
Работа со сканером очень интересно, есть один потенциальный заказчик у меня, ему как раз такой функционал нужен) Если поделитесь опытом, буду крайне благодарен.
Константину надо было отвечать, а так он не увидит просьбы про сканер.
Макросов генерации штрихкодов в интернете полно. Сгенерировал, присвоил товару, подключил сканер (был на блютузе) и погнал.
Я этим уже не занимаюсь (то шел далекий 2013 и клепал я макросы дичайшим процедурным VBA, хотя до сих пор не понимаю, где он - этот загадочный ООП VBA, ведь это про классы, экземпляры, наследование, инкапсуляцию и полиморфизм, сори за офтоп ), но кому интересно - вот наработки, все-таки 2 сезона когда-то эта штука отработала.
Даже видос какой-то остался для сотрудников:
yadi.sk/d/PkAYGBw-3UY8qQ
и папка с файлами, которые (естесно), корректно уже не открываются в моем новом excel, без подключения иконок, доп функций, разделов и т.д.:
yadi.sk/d/oiLcH-Gc3UY95o
Константин, спасибо большое за материалы, это очень ценно и многим может пригодиться, мне в том числе. А по поводу классов, инкапсуляции и прочего вполне все применимо к VBA. Это все реально, было бы желание))
Если в столбце цены товара стоит дробное число, например 11,11 то выдает ошибку при подсчёте суммы тайп мисматч, так как число не целое, как можно корректно этого избежать? Меняю в поле цена точку на запятую и все норм становится
точки не работают, все верно. Можно прописать событие, чтобы при наборе с клавиатуры точки в поле кол-во, автоматически подставлялась запятая. Событие на KeyPresss. Посмотрите комментарии к этому уроку, тут было предложение уже и даже код написан
Спасибо!
У меня при наборе стоит и так запятая, однако программа при подставлении этого значения в окно "цена" всегда меняет запятую на точку, в следствии чего выпадает ошибка. Получается берет с запятой а вставляет с точкой, пытаюсь разобраться теперь почему так происходит. Как менять при событие это я уже читал, а как избежать такое автозаполнение значений с заменой при работе summcalculate, не понимаю
Спасибо вам за интересную работу, все прям очень круто.
Я нашёл место перехода с запятой в точку. После функции поиска артикля при успешном исполнении функции он начинает заполнять формы пользовательской формы. И если в таблице цена указана с запятой (например 300,56 руб), то он почему то не меняет на стринговое значение (в строке sales.tbx_price.value=cell.cells(1,5). Не подскажите как можно это изменить?
Добрый день ошибка
Sub SummCalculate()
Dim Price As Double
Dim Count As Double
Dim Summ As Double
Price = Sales.txb_price.Value
!!!!!!!!!!!!!!!!!!!
Эту ошибку можно обработать, вот здесь подробно об этом - th-cam.com/video/-G2CMKddlTU/w-d-xo.html
У меня выдавало ошибку(число с ТОЧКОЙ). Помогло такой вариант (визуально точку в поле видно но считает и не выдает ошибку)
Sub SummCalculete() ' Подсчёт суммы заказа
On Error Resume Next
Dim Price As Double
Dim Count As Double
Dim Summ As Double
Price = Sales.txt_price.Value
Price = Replace(Sales.txt_price.Value, ".", ",", 1, 1)
Count = Sales.txt_count.Value
Count = Replace(Sales.txt_count.Value, ".", ",", 1, 1)
Summ = Price * Count
Sales.txt_sum.Value = Summ
End Sub
поправил код фильтра ввода тут: th-cam.com/video/d6lTL3d-Vh8/w-d-xo.html&lc=UgyEdP-MzzhhXnJNx-N4AaABAg
без проверки на ошибку, он пропускал нажатия стрелок и других несимвольных клавиш, после чего обработка события кейпрес - не срабатывает и вместо чисел можно вводить любые символы.
Павел, подскажите в чем ошибка.
Private Sub Sales_Initialize()
Call FillGoods
Me.cbx_датачек.Value = VBA.Date
Me.guest.Value = True
End Sub
итог: drive.google.com/drive/folders/1Hu1QQDz245esrRrgRTr10UpWPGzmNxPD?usp=sharing
Виталий, а в чем ошибка, не могу увидеть что-то?)
@@easyexcellesson разве не должна автоматически подставля текущая дата при открытии?
не понятно, для чего сделаны списки группы и раздела товаров. даже если подразумевается поиск товара по наименованию, то эти списки не имеют смысла. проще сделать поиск по наименованию так же, как по артикулу, используя неточный поиск и/или скролл по списку названий, отсортированному по алфавиту.
или в дальнейшем будет реализован ввод новых товаров в этой же форме? так опять же: для поиска новых товаров, эти группы не имеют смысла, разве что использовать список товаров из Ексель для выгрузки на сайт...
Списки сделаны были изначально, т.к. и планировалось заполнение разделов и групп из комбобокса. То, что они стали подтягиваться, это скорее мое предложение для заказчика. Но для этого необходимо постоянно прописывать эти разделы и группы в Складе. Будет ли такая работа проводиться, я не знаю. Именно поэтому возможность ручного выбора остается для данного варианта актуальна.
т.е. при заполнении данных по заказу, по сути, безразлично из какой группы конкретный товар? а выбрать вручную - это надо знать весь номенклатурный справочник наизусть или иметь его перед глазами, что просто нереально.
разделы и группы нужны только для внутренней статистики и дальнейшего анализа проданных товаров по группам. Для менеджера знать и найти раздел или группу не составит особого труда. Сайт перед глазами всегда. Единственное, что при увеличении объема заказов, как мне видится, может эта процедура отнимать время и просто стать неактуальной. Но это, как и вся обычная доработка, приходит со временем. Нельзя сразу сделать идеально готовый продукт. Требования достаточно часто могут меняться.
при таком выполнении будет снижаться скорость заполнения формы заказа. а это потери времени и покупателей. для программиста работа состоит в нажимании клавиш, а для менеджера продаж это не так. поэтому минимум должно быть лишних телодвижений.
Сделай проверку что б количество товара должно быть равно или меньше наличия
Swear Swear зачем? Продажи должны быть возможны и в минус. Остатки почти никогда идеально не соответствуют реальности на 100%
Alex Sloboda т.е если клиент закажет 20 шт. а по факту наличие 3 шт., как они ему продадут? если по факту на сегодня такого количества нет. На моём складе все идеально.
Swear Swear повторю, фактическое и учетное наличие (количество на остатке) разные вещи... клиент заказал 20шт. По учету у вас 3шт. А в реальности 25шт. Вам что не продавать этот товар пока не выясните почему их в учетной базе 3шт. а не 25шт???
К эксель это не имеет отношения, но это не склад - это бардак.
ProtecTORutube это управляемый бардак)))
Сколько стоит разработка такого проекта?
на первоначальном этапе (без доработок) разработка данного проекта стоит 50 т.р.
Easy Excel возможно рассчитать стоимость? куда можно отправить тех. задание?
Да, возможно, отправить можно сюда - info@1excel.ru