Практична робота №4
Створення програмних додатків засобами VBA
*Якщо панелі властивостей (Properties) немає, її можна ввімкнути кнопкою F4.
Властивості (Properties) об’єкта Userform: | |
Name | Sales |
Caption | «Обслуговування покупця» |
Для візуального відокремлення об’єктів один від одного використовуємо об’єкт Frame. Панель об’єктів (Toolbox) має наступний вигляд:
У разі відсутності панелі об’єктів її можна ввімкнути в меню View (Вид):
Властивості (Properties) об’єкту Frame1: | |
Name | Frame1 |
Caption | Виберіть код товару |
Властивості (Properties) об’єкту Codtovaru: | ||
Name | Codtovaru | |
ColumnCount | 2 | Двійка означає, що у виринаючому списку буде відображатись інформація з двох совпців |
Enabled | False | При завантаженні об’єкт - неактивний |
RowSource | A2:B11 | Стовпці, з яких береться інформація |
ColumnWidths | 17 pt;45 pt | 17 pt – ширина стовпця А у виринаю чому списку; 45 pt – ширина стовпця В |
Властивості (Properties) об’єкту Nazvatovaru: | ||
Name | Nazvatovaru | |
Caption | Залишити пункт пустим |
Властивості (Properties) об’єкту Cinaatovaru: | ||
Name | Cinatovaru | |
Caption | Залишити пункт пустим |
Властивості (Properties) об’єкту Kilkist: | ||
Name | Kilkist | |
Enabled | False | Після завантаження форми об’єкт неактивний |
Властивості (Properties) об’єкту CommandButton1: | ||
Name | CommandButton1 | |
Enabled | False | Після завантаження форми об’єкт неактивний |
Caption | Порахувати | Текст на кнопці |
Властивості (Properties) об’єкту Newk: | |
Name | Newk |
Caption | Новий клієнт (знижка 0%) |
Властивості (Properties) об’єкту Oldk: | |
Name | Oldk |
Caption | Постійний клієнт (знижка 5%) |
Властивості (Properties) об’єкту Summa: | ||
Name | Summa | |
Caption | Залишити пункт пустим |
Властивості (Properties) об’єкту Podatok: | ||
Name | Podatok | |
Caption | Залишити пункт пустим |
Властивості (Properties) об’єкту Fond: | ||
Name | Fond | |
Caption | Залишити пункт пустим |
Властивості (Properties) об’єкту Cash: | ||
Name | Cash | |
Enabled | False | Після завантаження форми об’єкт неактивний |
Властивості (Properties) об’єкту CommandButton2: | ||
Name | CommandButton2 | |
Enabled | False | Після завантаження форми об’єкт неактивний |
Caption | Здача | Текст на кнопці |
Властивості (Properties) об’єкту Zdacha: | ||
Name | Zdacha | |
Caption | Залишити пункт пустим |
Властивості (Properties) об’єкту EndSale: | ||
Name | EndSale | |
Enabled | False | Після завантаження форми об’єкт неактивний |
Caption | Завершити обслуговування | Текст на кнопці |
Властивості (Properties) об’єкту Clear: | ||
Name | Clear | |
Enabled | False | Після завантаження форми об’єкт - неактивний |
Caption | Очистити форму | Текст на кнопці |
Властивості (Properties) об’єкту CloseWindow: | ||
Name | CloseWindow | |
Enabled | True | Після завантаження форми об’єкт - активний |
Caption | Вихід | Текст на кнопці |
Властивості (Properties) об’єкту Label: | ||
Caption | Чек | Текст на ярлику |
Властивості (Properties) об’єкту Chek: | ||
Name | Chek | |
Autosize | True | Розмір |
Caption | Залишити пункт пустим | |
BackStyle | 1fmBackStyleOpaque | Об’єкт - непрозорий |
SpecialEffect | 3 – fmSpecialEffectEtched | Лейбл обрамляється рамкою |
Width | 80 | Ширина об’єкта = 80 пунктів |
Візуальне оформлення форми завершене. Можна приступати до написання коду програми.
Код – оголошення глобальних змінних:
Public Summ, Change, Tax, PF As Currency
Код налагоджень форми після її завантаження:
Private Sub Form_Load()
Summ = 0
Change = 0
Tax = 0
PF = 0
End Sub
Private Sub UserForm_Initialize()
With Codtovaru
.RowSource = "A2:B100"
End With
End Sub
Щоб ввести код програми конкретного об’єкту, необхідно клацнути на ньому двічі лівою кнопкою миші.
Код для об’єкту «Newk»:
Private Sub Newk_Click() | Подія |
Codtovaru.Enabled = True | Активація об’єкта Codtovaru |
Kilkist.Enabled = True | Активація об’єкта Kilkist |
CommandButton1.Enabled = True | Активація об’єкта CommandButton1 |
Cash.Enabled = True | Активація об’єкта Cash |
End Sub | Кінець події |
Код для об’єкту «Oldk»:
Private Sub Oldk_Click() | Подія |
Codtovaru.Enabled = True | Активація об’єкта Codtovaru |
Kilkist.Enabled = True | Активація об’єкта Kilkist |
CommandButton1.Enabled = True | Активація об’єкта CommandButton1 |
Cash.Enabled = True | Активація об’єкта Cash |
End Sub | Кінець події |
Код для об’єкту «Codtovaru»:
Private Sub Codtovaru_Change()
Dim i As Long
If Codtovaru.Text <> "" Then
For i = 1 To 100
If Range("A" & CStr(i)) = Codtovaru.Text Then
Nazvatovaru.Caption = Range("B" & CStr(i))
Cinatovaru.Caption = Range("C" & CStr(i))
End If
Next i
End If
End Sub
Код для об’єкту «CommandButton1» (кнопка «Порахувати»):
Private Sub CommandButton1_Click()
If OldK.Value = True Then
Summ = Summ + CCur(Val(Cinatovaru.Caption) * Val(Kilkist.Text))
Summ = Summ - Summ * 0.05
Else
Summ = Summ + CCur(Val(Cinatovaru.Caption) * Val(Kilkist.Text))
End If
Newk.Locked = True
OldK.Locked = True
Tax = Summ * 0.2
PF = Summ * 0.075
Chek.Caption = Chek.Caption & "Ціна:" & Cinatovaru.Caption & "*" & "Кількість:" & Kilkist.Text & Chr(13)
Chek.Caption = Chek.Caption & "Сума:" & Str(Val(Cinatovaru.Caption) * Val(Kilkist.Text)) & Chr(13)
Kilkist.Text = ""
Cinatovaru.Caption = "0"
Codtovaru.Value = ""
Nazvatovaru.Caption = ""
Summa.Caption = Str(Summ)
Podatok.Caption = Str(Tax)
Fond.Caption = Str(PF)
CommandButton2.Enabled = True
Clear.Enabled = True
End Sub
Операцію вибору товару і кількості штук можна повторити.
Код об’єкту «CommandButton2» (кнопка «Здача»):
Private Sub CommandButton2_Click()
Change = CCur(Val(Cash.Text)) - Summ
If (Change >= 0) Then
Zdacha.Caption = Str(Change)
CommandButton1.Enabled = False
EndSale.Enabled = True
Codtovaru.Enabled = False
Else
MsgBox "Покупець дав мало готівки!", vbOKCancel + vbCritical, "Помилка"
EndSale.Enabled = False
Cash.SetFocus
End If
End Sub
Код об’кту «EndSale» (кнопка «Завершити обслуговування»):
Private Sub EndSale_Click()
Chek.Caption = Chek.Caption & "Вартість: " & Str(Summ) & Chr(13)
If OldK.Value = True Then
Chek.Caption = Chek.Caption & "Знижка 5%: " & Str(Summ * 100 / 95 * 0.05) & Chr(13)
Else
Chek.Caption = Chek.Caption & "Знижка 0%: " & Str(Summ * 0) & Chr(13)
End If
Chek.Caption = Chek.Caption & "---------------" & Chr(13)
Chek.Caption = Chek.Caption & "ПДВ=20%: " & Str(Tax) & Chr(13)
Chek.Caption = Chek.Caption & "ПФ=7.5%: " & Str(PF) & Chr(13)
Chek.Caption = Chek.Caption & "---------------" & Chr(13)
Chek.Caption = Chek.Caption & "Готівка: " & Cash.Text & Chr(13)
Chek.Caption = Chek.Caption & "Здача: " & Str(Change) & Chr(13)
Chek.Caption = Chek.Caption & "---------------" & Chr(13)
Chek.Caption = Chek.Caption & Str(Date) & Chr(13)
Chek.Caption = Chek.Caption & Str(Time) & Chr(13)
Chek.Caption = Chek.Caption & "---------------" & Chr(13)
Chek.Caption = Chek.Caption & "Дякуємо за покупку!" & Chr(13)
Chek.Caption = Chek.Caption & "Фіскальний чек" & Chr(13)
Summ = 0
Change = 0
Tax = 0
PF = 0
CommandButton2.Enabled = False
EndSale.Enabled = False
Cash.Enabled = False
Kilkist.Enabled = False
Codtovaru.Enabled = False
Clear.Enabled = True
Newk.Locked = False
OldK.Locked = False
Newk.Value = False
OldK.Value = False
End Sub
Код об’єкта «Clear»:
Private Sub Clear_Click() 'кнопка "Очистити форму"
Summ = 0
Chek.Caption = ""
Summa.Caption = ""
Podatok.Caption = ""
Fond.Caption = ""
Zdacha.Caption = ""
Nazvatovaru.Caption = ""
Cinatovaru.Caption = ""
Cash.Text = ""
Codtovaru.Enabled = False
Kilkist.Enabled = False
CommandButton1.Enabled = False
Cash.Enabled = False
CommandButton2.Enabled = False
EndSale.Enabled = False
Newk.Enabled = True
OldK.Enabled = True
Newk.Locked = False
OldK.Locked = False
Newk.Value = False
OldK.Value = False
Codtovaru.Value = ""
Chek.width = 80
End Sub
Код об’єкту «CloseWindow»:
Private Sub CloseWindow_Click()
End
End Sub
Sub Vashe prizvusche()
Sales.Show
End Sub
Зберегти зміни.
Public Summ, Change, Tax, PF As Currency
Private Sub Form_Load()
Summ = 0
Change = 0
Tax = 0
PF = 0
End Sub
Private Sub Clear_Click()
Summ = 0
Chek.Caption = ""
Summa.Caption = ""
Podatok.Caption = ""
Fond.Caption = ""
Zdacha.Caption = ""
Nazvatovaru.Caption = ""
Cinatovaru.Caption = ""
Cash.Text = ""
Codtovaru.Enabled = False
Kilkist.Enabled = False
CommandButton1.Enabled = False
Cash.Enabled = False
CommandButton2.Enabled = False
EndSale.Enabled = False
Newk.Enabled = True
OldK.Enabled = True
Newk.Locked = False
OldK.Locked = False
Newk.Value = False
OldK.Value = False
Codtovaru.Value = ""
End Sub
Private Sub CloseWindow_Click()
End
End Sub
Private Sub Codtovaru_Change()
Dim i As Long
If Codtovaru.Text <> "" Then
For i = 1 To 100
If Range("A" & CStr(i)) = Codtovaru.Text Then
Nazvatovaru.Caption = Range("B" & CStr(i))
Cinatovaru.Caption = Range("C" & CStr(i))
End If
Next i
End If
End Sub
Private Sub CommandButton2_Click()
Change = CCur(Val(Cash.Text)) - Summ
If (Change >= 0) Then
Zdacha.Caption = Str(Change)
CommandButton1.Enabled = False
EndSale.Enabled = True
Codtovaru.Enabled = False
Else
MsgBox "Покупець дав мало готівки!", vbOKCancel + vbCritical, "Помилка"
EndSale.Enabled = False
Cash.SetFocus
End If
End Sub
Private Sub CommandButton1_Click()
If OldK.Value = True Then
Summ = Summ + CCur(Val(Cinatovaru.Caption) * Val(Kilkist.Text))
Summ = Summ - Summ * 0.05
Else
Summ = Summ + CCur(Val(Cinatovaru.Caption) * Val(Kilkist.Text))
End If
Newk.Locked = True
OldK.Locked = True
Tax = Summ * 0.2
PF = Summ * 0.075
Chek.Caption = Chek.Caption & "Ціна:" & Cinatovaru.Caption & "*" & "Кількість:" & Kilkist.Text & Chr(13)
Chek.Caption = Chek.Caption & "Сума:" & Str(Val(Cinatovaru.Caption) * Val(Kilkist.Text)) & Chr(13)
Kilkist.Text = ""
Cinatovaru.Caption = "0"
Codtovaru.Value = ""
Nazvatovaru.Caption = ""
Summa.Caption = Str(Summ)
Podatok.Caption = Str(Tax)
Fond.Caption = Str(PF)
CommandButton2.Enabled = True
Clear.Enabled = True
End Sub
Private Sub EndSale_Click()
Chek.Caption = Chek.Caption & "Вартість: " & Str(Summ) & Chr(13)
If OldK.Value = True Then
Chek.Caption = Chek.Caption & "Знижка 5%: " & Str(Summ * 100 / 95 * 0.05) & Chr(13)
Else
Chek.Caption = Chek.Caption & "Знижка 0%: " & Str(Summ * 0) & Chr(13)
End If
Chek.Caption = Chek.Caption & "---------------" & Chr(13)
Chek.Caption = Chek.Caption & "ПДВ=20%: " & Str(Tax) & Chr(13)
Chek.Caption = Chek.Caption & "ПФ=7.5%: " & Str(PF) & Chr(13)
Chek.Caption = Chek.Caption & "---------------" & Chr(13)
Chek.Caption = Chek.Caption & "Готівка: " & Cash.Text & Chr(13)
Chek.Caption = Chek.Caption & "Здача: " & Str(Change) & Chr(13)
Chek.Caption = Chek.Caption & "---------------" & Chr(13)
Chek.Caption = Chek.Caption & Str(Date) & Chr(13)
Chek.Caption = Chek.Caption & Str(Time) & Chr(13)
Chek.Caption = Chek.Caption & "---------------" & Chr(13)
Chek.Caption = Chek.Caption & "Дякуємо за покупку!" & Chr(13)
Chek.Caption = Chek.Caption & "Фіскальний чек" & Chr(13)
Summ = 0
Change = 0
Tax = 0
PF = 0
CommandButton2.Enabled = False
EndSale.Enabled = False
Cash.Enabled = False
Kilkist.Enabled = False
Codtovaru.Enabled = False
Clear.Enabled = True
Newk.Locked = False
OldK.Locked = False
Newk.Value = False
OldK.Value = False
End Sub
Private Sub Newk_Click()
Codtovaru.Enabled = True
Kilkist.Enabled = True
CommandButton1.Enabled = True
Cash.Enabled = True
End Sub
Private Sub OldK_Click()
Codtovaru.Enabled = True
Kilkist.Enabled = True
CommandButton1.Enabled = True
Cash.Enabled = True
End Sub
Private Sub UserForm_Initialize()
With Codtovaru
.RowSource = "A2:B100"
End With
End Sub