Задание 4. 3. Разработка заявки на поступление товаров
Наша задача - выполнить задание, близкое по содержанию предыдущему, а именно, Вам необходимо разработать удобное приложение для составления заявки на канцтовары. Создайте новую книгу Excel и на втором рабочем листе создайте список некоторых товаров с их ценами (рис. 4.9).
Рис. 4.9.
Далее на первом рабочем листе (рис. 4.10) должна быть расположена удобная форма для ввода информации о заказе.
Рис. 4.10.
Текст в ячейки А3:D5 вписывать не надо, они заполнятся при дальнейшем выполнении программы.
Оформим столбцы A , B , C и D следующим образом: установим границы, введем названия в ячейки A 2, B 2, C 2 и D 2.
Далее расположим поле со списком ( Name – Spisok 1), две метки – Label 1 ( Caption - Итог) и Label 2, три кнопки Очистить, Пересчет и Печать (рис. 4.11). Далее уберем сетку с экрана.
Рис. 4.11.
Теперь наша задача – сделать так, чтобы Spisok 1 автоматически заполнялся при открытии книги. Для этого процедуру, автоматически выполняемую при открытии книги, оформите следующим образом:
Private Sub Workbook_Open()
Worksheets(1).Spisok1.Clear
‘ Очистка списка. И далее подсчет количества записей на втором листе – в прайсе.
N = 0
While Worksheets(2).Cells(N + 1, 1).Value <> ""
N = N + 1
Wend
‘Заполнение списка
For i = 1 To N
a1 = Worksheets(2).Cells(i, 1).Value
a2 = Worksheets(2).Cells(i, 2).Value
a = a1 & " " & a2 & " " & " руб."
Worksheets(1).Spisok1.AddItem a
Next
End Sub
Теперь наша задача сделать так, чтобы при щелчке по строке списка эта информация фиксировалась в очередной строке первого рабочего листа. Мы таким способом включаем в заявку очередную строку. Поэтому оформим процедуру, обслуживающую щелчок по полю со списком:
Private Sub Spisok1_Click()
‘ Подсчет в переменной N заполненных строк бланка заказа
N = 0
While Worksheets(1).Cells(N + 3, 1).Value <> ""
N = N + 1
Wend
Worksheets(1).Cells(N + 3, 1) = Worksheets(2).Cells(Spisok1.ListIndex + 1, 1).Value
Worksheets(1).Cells(N + 3, 2) = Worksheets(2).Cells(Spisok1.ListIndex + 1, 2).Value
‘ Далее используется функция InputBox() для ввода значения количества товара.
‘ А именно то, что мы вводим, заносится в переменную qw.
qw = InputBox("Введите количество", "Ввод числа", 1)
Worksheets(1).Cells(N + 3, 3).Value = qw
Необходимо ввести параметры функции InputBox (текст, указанный в скобках). Это текст и значение количества товара, которые будут первоначально выводиться в окне сообщения. Далее производится вычисление суммы по позиции товара.
Worksheets(1).Cells(N + 3, 4).Value =
qw * Worksheets(1).Cells(N + 3, 2).Value
Label2.Caption = Str(Val(Label2.Caption) + Worksheets(1).Cells(N + 3, 4))
End Sub
Здесь используются стандартные функции Visual Basic Val (для перевода из тестового вида в числовой) и Str (для перевода из числового вида в текстовый).
Мы пока не создали обработку событий по кнопкам Пересчет и Очистка. Это мы сделаем чуть позже, а пока оформим третий лист так, как показано на рис. 4.12.
Наша задача сделать так, чтобы по кнопке Печать заполнялся бланк.
Рис. 4.12.
Private Sub Печать _Click()
‘ Подсчет строк в бланке заказа
N = 0
While Worksheets(1).Cells(N + 3, 1).Value < > ""
N = N + 1
Wend
For i = 0 To N-1
‘Заполнение номера позиции
Worksheets (3). Cells (14 + i , 1) = i + 1
‘Заполнение названия позиции заказа
Worksheets (3). Cells (14 + i , 2) = Worksheets (1). Cells (3 + i , 1)
‘Заполнение цены единицы товара
Worksheets(3).Cells(14 + i, 3) = Worksheets(1).Cells(3 + i, 2)
‘Заполнение количества товара
Worksheets(3).Cells(14 + i, 4) = Worksheets(1).Cells(3 + i, 3)
‘Заполнение цены с учетом количества
Worksheets (3). Cells (14 + i , 5) = Worksheets (1). Cells (3 + i , 4)
Next
‘Активизация третьего листа