Задание 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

‘Активизация третьего листа