Помогите написать макрос к прайс-листу
Модератор: Naeel Maqsudov
Суть такая, в прайс листе есть количество товара, которое должно изменяться по мере того как происходит продажа.
Я сделала бланк заказа в котором так же через макросы можно выбрать товары для продажи в нужном количестве и при нажатии кнопки Печать формируется бланк для заказчика.
Вот через эту же функцию мне нужно чтобы количество товара в прайсе изменялось на основании бланка заказа.
Всё перепробовала, никак не пойму что не так делаю.
Иногда получается изменить количество, но не более двух позиций, как только позиций больше не изменяется ничего. Может я что-то забываю прописать.
Заранее всем спасибо за помощь.
Я сделала бланк заказа в котором так же через макросы можно выбрать товары для продажи в нужном количестве и при нажатии кнопки Печать формируется бланк для заказчика.
Вот через эту же функцию мне нужно чтобы количество товара в прайсе изменялось на основании бланка заказа.
Всё перепробовала, никак не пойму что не так делаю.
Иногда получается изменить количество, но не более двух позиций, как только позиций больше не изменяется ничего. Может я что-то забываю прописать.
Заранее всем спасибо за помощь.
Нашла в обучалке примерно то что мне нужно. Но здесь идет ссылка на одну единственную ячейку в которой меняется количество. А мне нужно указать несколько ячеек, в которых меняется количество
" Private Sub CommandButton1_Click()
ColPrais = Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 4).Value
Col = Range("E6").Value
If Col > ColPrais Then
MsgBox "Такого количества на складе нет"
Exit Sub
End If
Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 3).Value = Range("E7").Value
ColPrais = ColPrais - Col
Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 4).Value = ColPrais
MsgBox "В базу внесена информация"
End Sub"
Никак не получается, понимаю что это вроде просто, но что-то не сходится.
Помогите пожалуйста.
" Private Sub CommandButton1_Click()
ColPrais = Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 4).Value
Col = Range("E6").Value
If Col > ColPrais Then
MsgBox "Такого количества на складе нет"
Exit Sub
End If
Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 3).Value = Range("E7").Value
ColPrais = ColPrais - Col
Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 4).Value = ColPrais
MsgBox "В базу внесена информация"
End Sub"
Никак не получается, понимаю что это вроде просто, но что-то не сходится.
Помогите пожалуйста.
Приложите сюда Ваш Excel-файл(главный) и файл заказчика(наверное, желательно заполненный). Что такое Spk? Это структура что-ли?
Сам файл. Пока подсчет остатков сделала через ВПР, но это очень не удобно.
Spk это просто имя Поля со списком.
Spk это просто имя Поля со списком.
- Вложения
-
- Копия Заказы п.zip
- (47.17 КБ) 164 скачивания
А что такое ВПР? А ALPINE ALPACA -это шоколадка что-ли?
Для того, чтобы это реализовать, то нужно в функции-реакции на событие Spk_Click() сделать сначала проверку на доступное количество запрашиваемого товара и я так посмотрел - Вашу задачу вполне можно решить теми методами, которыми Вы пользуетесь. Т.е. при нажатии на кнопку Печать в конце нужно добавить программу, которая снова проходится по строкам 1 листа, в каждом элементе берет строку из первого столбца и ищет ее в Прайс-листе, когда она найдена - просто отнимаем количество в 3 столбце и все.

ВПР это функция в Excel. И какая разница что за товар. Не задавайте глупых вопросов если не можете помочь.
Слива писал(а):А что такое ВПР? А ALPINE ALPACA -это шоколадка что-ли?Для того, чтобы это реализовать, то нужно в функции-реакции на событие Spk_Click() сделать сначала проверку на доступное количество запрашиваемого товара и я так посмотрел - Вашу задачу вполне можно решить теми методами, которыми Вы пользуетесь. Т.е. при нажатии на кнопку Печать в конце нужно добавить программу, которая снова проходится по строкам 1 листа, в каждом элементе берет строку из первого столбца и ищет ее в Прайс-листе, когда она найдена - просто отнимаем количество в 3 столбце и все.
Это я поняла и сама, вот только когда я пытаюсь это сделать, то либо вообще ничего не происходит либо изменяются только два наименования, а если поставить в бланк заказа больше наименований то он опять ничего не высчитывает. Я уже и пробовала просто ссылатся на лист и через переменные, не могу понять почему не получается. Я уже всю голову сломала.
Вот в этом элементе Col = Range("E6").Value ссылка идет на одну ячейку, если я ставлю что количество нужно высчитывать со всего листа из ячеек типа Cell (N +4, 3) он вроде делает подсчет но не происходит изменения количества на прайс листе. Причем я прописываю что N+1, то есть и все остальные ячейки(строки) в столбце 3
Возможно в этом алгоритме я что-то пропускаю, вот никак не могу понять что именно
Написала процедуру, но она почему то работает только с первой строчкой. Ребята помогите что не так, почему не изменяется количество в других строках. Хелп.
Вот:
ColPrais = Worksheets("Прайс-лист").Cells(Spk.ListIndex + 2, 3).Value
Col = Worksheets("Бланк заказа").Cells(Spk.ListIndex + 4, 3).Value
If Col > ColPrais Then
MsgBox "Такого количества на складе нет"
Exit Sub
End If
ColPrais = ColPrais - Col
Worksheets("Прайс-лист").Cells(Spk.ListIndex + 2, 3).Value = ColPrais
MsgBox "В базу внесена информация"
Вот:
ColPrais = Worksheets("Прайс-лист").Cells(Spk.ListIndex + 2, 3).Value
Col = Worksheets("Бланк заказа").Cells(Spk.ListIndex + 4, 3).Value
If Col > ColPrais Then
MsgBox "Такого количества на складе нет"
Exit Sub
End If
ColPrais = ColPrais - Col
Worksheets("Прайс-лист").Cells(Spk.ListIndex + 2, 3).Value = ColPrais
MsgBox "В базу внесена информация"