Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Разработка заявки на поступление товаров






 

Наша задача выполнить задание, близкое по содержанию предыдущему, а именно Вам необходимо разработать удобное приложение для составления заявки на канцтовары. Создайте новую книгу Excel и на втором рабочем листе создайте список некоторых товаров с их ценами (рис. 31).

 

 

Рис. 31.

Далее на первом рабочем листе (рис. 32) должна быть расположена удобная форма для ввода информации о заказе.

 

Рис. 32.

Действия при выполнении этой задачи должны быть следующими. Во-первых уберем сетку с экрана (меню Сервис, затем Параметры). Далее оформим столбцы A, B, C и D следующим образом: установим внешние границы, установим внутренние границы, введем названия в ячейки A2, B2, C2 и D2. Далее расположим поле со списком (Name – Spisok1), две метки – Label1 и Label2, три кнопки Очистить, Пересчет и Печать (рис.33).

 

 

 

Рис. 33.

 

Теперь наша задача – сделать так, чтобы Spisok1 автоматически заполнялся при открытии книги. Для этого процедуру, автоматически, выполняемую при открытии книги, оформите следующим образом:

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

‘ Далее производится вычисление суммы по позиции товара.

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 (для перевода из числового вида в текстовый).

Мы пока не создали обработку событий по кнопкам Пересчет и Очистка. Это мы сделаем чуть позже, а пока оформим третий лист, так как показано на рис. 34.

 

 

Рис. 34.

 

Теперь наша задача сделать так, чтобы по кнопке Печать (на первом рабочем листе) заполнялся бланк (рис.34).

 

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

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

Worksheets(3).Activate

End Sub

Теперь вернемся к первому листу и рассмотрим процедуру, вызываемую по кнопке Очистить:

Private Sub Очистить_Click()

N = 0

While Worksheets(1).Cells(N + 3, 1).Value < > " "

N = N + 1

Wend

For i = 3 To N + 2

Worksheets(1). Cells(i, 1).Value = " "

Worksheets(1). Cells(i, 2).Value = " "

Worksheets(1). Cells(i, 3).Value = " "

Worksheets(1). Cells(i, 4).Value = " "

Next

Label2.Caption = " "

End Sub

И теперь осталось только рассмотреть обработку нажатия на кнопку Пересчет. Смысл этой процедуры в том, что если мы в бланке заказа произведем изменения (удаляем строку или изменяем количество товара), то очевидно необходимо поменять и итоговые вычисления.

Private Sub Пересчет_Click()

N = 0

While Worksheets(1).Cells(N + 3, 1).Value < > " "

N = N + 1

Wend

symma = 0

For i = 3 To N + 2

a = Worksheets(1).Cells(i, 3).Value

Worksheets(1).Cells(i, 4).Value =Worksheets(1).Cells(i, 2).Value * a

symma = symma + Worksheets(1).Cells(i, 4).Value

Next

Label2.Caption = Str(symma)

End Sub

При открытии книги мы рассматривали ранее процедуру Workbook_Open(). В процессе работы с книгой мы можем на втором листе вносить изменения в номенклатуру товаров. Чтобы эти изменения сразу же отражались в уже открытой книге, аналогичные действия выполним в процедуре Worksheet_Activate():

Private Sub Worksheet_Activate()

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

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.