Помогите написать макрос к прайс-листу

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Татьяна86
Сообщения: 6
Зарегистрирован: 07 ноя 2017, 18:19

07 ноя 2017, 18:26

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

Заранее всем спасибо за помощь.
Татьяна86
Сообщения: 6
Зарегистрирован: 07 ноя 2017, 18:19

07 ноя 2017, 23:16

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

" 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"

Никак не получается, понимаю что это вроде просто, но что-то не сходится.
Помогите пожалуйста.
Слива
Сообщения: 133
Зарегистрирован: 19 мар 2016, 10:15

08 ноя 2017, 07:17

Приложите сюда Ваш Excel-файл(главный) и файл заказчика(наверное, желательно заполненный). Что такое Spk? Это структура что-ли?
Татьяна86
Сообщения: 6
Зарегистрирован: 07 ноя 2017, 18:19

08 ноя 2017, 13:09

Сам файл. Пока подсчет остатков сделала через ВПР, но это очень не удобно.
Spk это просто имя Поля со списком.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Слива
Сообщения: 133
Зарегистрирован: 19 мар 2016, 10:15

08 ноя 2017, 15:26

А что такое ВПР? А ALPINE ALPACA -это шоколадка что-ли? :rolleyes: Для того, чтобы это реализовать, то нужно в функции-реакции на событие Spk_Click() сделать сначала проверку на доступное количество запрашиваемого товара и я так посмотрел - Вашу задачу вполне можно решить теми методами, которыми Вы пользуетесь. Т.е. при нажатии на кнопку Печать в конце нужно добавить программу, которая снова проходится по строкам 1 листа, в каждом элементе берет строку из первого столбца и ищет ее в Прайс-листе, когда она найдена - просто отнимаем количество в 3 столбце и все.
Татьяна86
Сообщения: 6
Зарегистрирован: 07 ноя 2017, 18:19

08 ноя 2017, 15:49

ВПР это функция в Excel. И какая разница что за товар. Не задавайте глупых вопросов если не можете помочь.
Татьяна86
Сообщения: 6
Зарегистрирован: 07 ноя 2017, 18:19

08 ноя 2017, 18:27

Слива писал(а):А что такое ВПР? А ALPINE ALPACA -это шоколадка что-ли? :rolleyes: Для того, чтобы это реализовать, то нужно в функции-реакции на событие Spk_Click() сделать сначала проверку на доступное количество запрашиваемого товара и я так посмотрел - Вашу задачу вполне можно решить теми методами, которыми Вы пользуетесь. Т.е. при нажатии на кнопку Печать в конце нужно добавить программу, которая снова проходится по строкам 1 листа, в каждом элементе берет строку из первого столбца и ищет ее в Прайс-листе, когда она найдена - просто отнимаем количество в 3 столбце и все.

Это я поняла и сама, вот только когда я пытаюсь это сделать, то либо вообще ничего не происходит либо изменяются только два наименования, а если поставить в бланк заказа больше наименований то он опять ничего не высчитывает. Я уже и пробовала просто ссылатся на лист и через переменные, не могу понять почему не получается. Я уже всю голову сломала.
Вот в этом элементе Col = Range("E6").Value ссылка идет на одну ячейку, если я ставлю что количество нужно высчитывать со всего листа из ячеек типа Cell (N +4, 3) он вроде делает подсчет но не происходит изменения количества на прайс листе. Причем я прописываю что N+1, то есть и все остальные ячейки(строки) в столбце 3
Возможно в этом алгоритме я что-то пропускаю, вот никак не могу понять что именно
Татьяна86
Сообщения: 6
Зарегистрирован: 07 ноя 2017, 18:19

08 ноя 2017, 21:15

Написала процедуру, но она почему то работает только с первой строчкой. Ребята помогите что не так, почему не изменяется количество в других строках. Хелп.
Вот:
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 "В базу внесена информация"
Ответить