Позначення складових елементів управління
Поперкдній запис-----pop
Наступний запис-------nast
Перший запис----------odyn
Останній запис--------ost
Редагувати--------------redag
Доповнити--------------dop
Видалити----------------del
Зберегти-----------------zber
Відмінити---------------canc
Сорт. за кільк.----------sort
Всього (зарплата)------vse
Кількість записів------kolzap
Вихід--------------------ex
Перед тим як ввести програмний код для окремих процедур потрібно задати імена ідентифікаторів.
Текст програми
Спочатку нам треба створити активізацію форми:
Dim x1 As Date
Dim x4, jf, i As Integer
Dim x3, x6, x8, x9, x11, x12, x13, x10, jr As Double
Dim x2, x5, x7 As String
Dim x0, x20 As Variant
Private Sub canc_Click()
dat.Text = x1
pk.Text = x2
narah.Text = x3
kilc.Text = x4
fah.Text = x5
taruf.Text = x6
rozrad.Text = x7
koef.Text = x8
premia.Text = x9
nadb.Text = x10
vn.Text = x11
pod.Text = x12
vsogo.Text = x13
'Кнопки
odyn.Enabled = True
pop.Enabled = True
nast.Enabled = True
ost.Enabled = True
redag.Enabled = True
dop.Enabled = True
canc.Enabled = False
zber.Enabled = False
ex.Enabled = True
'Поля
dat.Locked = True
pk.Locked = True
fah.Locked = True
rozrad.Locked = True
kilc.Locked = True
taruf.Locked = True
koef.Locked = True
narah.Locked = True
premia.Locked = True
nadb.Locked = True
vn.Locked = True
pod.Locked = True
vsogo.Locked = True
pk.BackColor = &HFFFFFF
fah.BackColor = &HFFFFFF
rozrad.BackColor = &HFFFFFF
kilc.BackColor = &HFFFFFF
End Sub
Private Sub dat_Change()
End Sub
Private Sub dop_Click()
i = 1
'Змінні
x1 = dat.Text
x2 = pk.Text
x3 = narah.Text
x4 = kilc.Text
x5 = fah.Text
x6 = taruf.Text
x7 = rozrad.Text
x8 = koef.Text
x9 = premia.Text
x10 = nadb.Text
x11 = vn.Text
x12 = pod.Text
x13 = vsogo.Text
'Кнопки
odyn.Enabled = False
pop.Enabled = False
nast.Enabled = False
ost.Enabled = False
redag.Enabled = False
dop.Enabled = False
canc.Enabled = True
zber.Enabled = True
ex.Enabled = False
'Поля
dat.Text = Date
pk.Text = ""
fah.Text = ""
taruf.Text = ""
rozrad.Text = ""
kilc.Text = ""
narah.Text = ""
premia.Text = ""
nadb.Text = ""
vn.Text = ""
pod.Text = ""
vsogo.Text = ""
'Доступ до полів
pk.Locked = False
fah.Locked = False
rozrad.Locked = False
kilc.Locked = False
kilc.SetFocus
pk.BackColor = &HFF00&
fah.BackColor = &HFF00&
rozrad.BackColor = &HFF00&
kilc.BackColor = &HFF00&
End Sub
Private Sub ex_Click()
If MsgBox("Підтвердіть вихід", vbYesNo, "Вікно запиту") = vbYes Then
Unload UserForm1
End If
End Sub
Private Sub fah_Change()
'Нова змінна
x0 = ActiveCell.Address
'Довідник фахів
Range("b3").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = fah.Text Then
jf = ActiveCell.Offset(0, 1).Value
End If
ActiveCell.Offset(1, 0).Select
Loop
'Поле довідника
taruf.Text = jf
'Наступний вибір
Range(x0).Select
End Sub
Private Sub kilc_Change()
'Розрахунок
narah.Text = Str(Int(jf * jr * Val(kilc.Text) * 100) / 100)
nadb.Text = Str(Int(jf * jr * Val(kilc.Text) * 20) / 100)
vn.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 100) / 100)
pod.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 10) / 100)
vsogo.Text = Str(Int((Val(vn.Text) - Val(pod.Text)) * 100) / 100)
If Val(kilc.Text) < 100 Then
premia = 0
ElseIf Val(kilc.Text) < 250 Then
premia = Val(narah.Text) * 0.05
ElseIf Val(kilc.Text) < 350 Then
premia = Val(narah.Text) * 0.1
Else
premia = Val(narah.Text) * 0.2
End If
End Sub
Private Sub koef_Change()
'Розрахунок
narah.Text = Str(Int(jf * jr * Val(kilc.Text) * 100) / 100)
nadb.Text = Str(Int(jf * jr * Val(kilc.Text) * 20) / 100)
vn.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 100) / 100)
pod.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 10) / 100)
vsogo.Text = Str(Int((Val(vn.Text) - Val(pod.Text)) * 100) / 100)
If Val(kilc.Text) < 100 Then
premia = 0
ElseIf Val(kilc.Text) < 250 Then
premia = Val(narah.Text) * 0.05
ElseIf Val(kilc.Text) < 350 Then
premia = Val(narah.Text) * 0.1
Else
premia = Val(narah.Text) * 0.2
End If
End Sub
Private Sub kolzap_Click()
'Адреса активного запису
q = ActiveCell.Address
'Розрахунок
'Перехід на 1 запис
Range("g3").Select
'Початкове значення
s = 1
'Кількість записів
Do While ActiveCell.Offset(1, 0).Value <> ""
ActiveCell.Offset(1, 0).Select
s = s + 1
Loop
'Повернення на активний запис
Range(q).Select
'Поля гол таблиці
dat.Text = ActiveCell.Value
pk.Text = ActiveCell.Offset(0, 1).Value
fah.Text = ActiveCell.Offset(0, 2).Value
rozrad.Text = ActiveCell.Offset(0, 3).Value
kilc.Text = ActiveCell.Offset(0, 4).Value
taruf.Text = ActiveCell.Offset(0, 5).Value
koef.Text = ActiveCell.Offset(0, 6).Value
narah.Text = ActiveCell.Offset(0, 7).Value
premia.Text = ActiveCell.Offset(0, 8).Value
nadb.Text = ActiveCell.Offset(0, 9).Value
vn.Text = ActiveCell.Offset(0, 10).Value
pod.Text = ActiveCell.Offset(0, 11).Value
vsogo.Text = ActiveCell.Offset(0, 12).Value
'Виведення результатів
MsgBox "Кількість записів у базі даних=" & s
End Sub
Private Sub nadb_Change()
nadb.Text = Str(Int(jf * jr * Val(kilc.Text) * 20) / 100)
End Sub
Private Sub narah_Change()
narah.Text = Str(Int(jf * jr * Val(kilc.Text) * 100) / 100)
End Sub
Private Sub nast_Click()
'Умова
If ActiveCell.Offset(1, 0).Value <> "" Then
ActiveCell.Offset(1, 0).Select
'Поля головної таблиці
dat.Text = ActiveCell.Value
pk.Text = ActiveCell.Offset(0, 1).Value
fah.Text = ActiveCell.Offset(0, 2).Value
rozrad.Text = ActiveCell.Offset(0, 3).Value
kilc.Text = ActiveCell.Offset(0, 4).Value
taruf.Text = ActiveCell.Offset(0, 5).Value
koef.Text = ActiveCell.Offset(0, 6).Value
narah.Text = ActiveCell.Offset(0, 7).Value
premia.Text = ActiveCell.Offset(0, 8).Value
nadb.Text = ActiveCell.Offset(0, 9).Value
vn.Text = ActiveCell.Offset(0, 10).Value
pod.Text = ActiveCell.Offset(0, 11).Value
vsogo.Text = ActiveCell.Offset(0, 12).Value
'Активність кнопок
odyn.Enabled = True
pop.Enabled = True
Else
'Активність кнопок
nast.Enabled = False
ost.Enabled = False
MsgBox "Останній запис"
End If
End Sub
Private Sub odyn_Click()
'Умова
Do While ActiveCell.Row > 3
ActiveCell.Offset(-1, 0).Select
Loop
'Поля головної таблиці
dat.Text = ActiveCell.Value
pk.Text = ActiveCell.Offset(0, 1).Value
fah.Text = ActiveCell.Offset(0, 2).Value
rozrad.Text = ActiveCell.Offset(0, 3).Value
kilc.Text = ActiveCell.Offset(0, 4).Value
taruf.Text = ActiveCell.Offset(0, 5).Value
koef.Text = ActiveCell.Offset(0, 6).Value
narah.Text = ActiveCell.Offset(0, 7).Value
premia.Text = ActiveCell.Offset(0, 8).Value
nadb.Text = ActiveCell.Offset(0, 9).Value
vn.Text = ActiveCell.Offset(0, 10).Value
pod.Text = ActiveCell.Offset(0, 11).Value
vsogo.Text = ActiveCell.Offset(0, 12).Value
'Активність кнопок
nast.Enabled = True
ost.Enabled = True
odyn.Enabled = False
pop.Enabled = False
MsgBox "Перший запис"
End Sub
Private Sub ost_Click()
'Умова
Do While ActiveCell.Offset(1, 0).Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
'Поля головної таблиці
dat.Text = ActiveCell.Value
pk.Text = ActiveCell.Offset(0, 1).Value
fah.Text = ActiveCell.Offset(0, 2).Value
rozrad.Text = ActiveCell.Offset(0, 3).Value
kilc.Text = ActiveCell.Offset(0, 4).Value
taruf.Text = ActiveCell.Offset(0, 5).Value
koef.Text = ActiveCell.Offset(0, 6).Value
narah.Text = ActiveCell.Offset(0, 7).Value
premia.Text = ActiveCell.Offset(0, 8).Value
nadb.Text = ActiveCell.Offset(0, 9).Value
vn.Text = ActiveCell.Offset(0, 10).Value
pod.Text = ActiveCell.Offset(0, 11).Value
vsogo.Text = ActiveCell.Offset(0, 12).Value
'Активність кнопок
odyn.Enabled = True
pop.Enabled = True
nast.Enabled = False
ost.Enabled = False
MsgBox "Останній запис"
End Sub
Private Sub pk_Change()
End Sub
Private Sub pod_Change()
vn.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 100) / 100)
pod.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 10) / 100)
vsogo.Text = Str(Int((Val(vn.Text) - Val(pod.Text)) * 100) / 100)
End Sub
Private Sub pop_Click()
'Умова
If ActiveCell.Row > 3 Then
ActiveCell.Offset(-1, 0).Select
'Поля головної таблиці
dat.Text = ActiveCell.Value
pk.Text = ActiveCell.Offset(0, 1).Value
fah.Text = ActiveCell.Offset(0, 2).Value
rozrad.Text = ActiveCell.Offset(0, 3).Value
kilc.Text = ActiveCell.Offset(0, 4).Value
taruf.Text = ActiveCell.Offset(0, 5).Value
koef.Text = ActiveCell.Offset(0, 6).Value
narah.Text = ActiveCell.Offset(0, 7).Value
premia.Text = ActiveCell.Offset(0, 8).Value
nadb.Text = ActiveCell.Offset(0, 9).Value
vn.Text = ActiveCell.Offset(0, 10).Value
pod.Text = ActiveCell.Offset(0, 11).Value
vsogo.Text = ActiveCell.Offset(0, 12).Value
'Активність кнопок
nast.Enabled = True
ost.Enabled = True
Else
'Активність кнопок
odyn.Enabled = False
pop.Enabled = False
MsgBox "Перший запис"
End If
End Sub
Private Sub premia_Change()
If Val(kilc.Text) < 100 Then
premia = 0
ElseIf Val(kilc.Text) < 250 Then
premia = Val(narah.Text) * 0.05
ElseIf Val(kilc.Text) < 350 Then
premia = Val(narah.Text) * 0.1
Else
premia = Val(narah.Text) * 0.2
End If
End Sub
Private Sub redag_Click()
i = 2
'Змінні
x1 = dat.Text
x2 = pk.Text
x3 = narah.Text
x4 = kilc.Text
x5 = fah.Text
x6 = taruf.Text
x7 = rozrad.Text
x8 = koef.Text
x9 = premia.Text
x10 = nadb.Text
x11 = vn.Text
x12 = pod.Text
x13 = vsogo.Text
'Кнопки
odyn.Enabled = False
pop.Enabled = False
nast.Enabled = False
ost.Enabled = False
redag.Enabled = False
dop.Enabled = False
canc.Enabled = True
zber.Enabled = True
ex.Enabled = False
'Доступ до полів
pk.Locked = False
fah.Locked = False
rozrad.Locked = False
kilc.Locked = False
kilc.SetFocus
pk.BackColor = &HFF00&
fah.BackColor = &HFF00&
rozrad.BackColor = &HFF00&
kilc.BackColor = &HFF00&
End Sub
Private Sub rozrad_Change()
'Нова змінна
x20 = ActiveCell.Address
'Довідник розрядів
Range("d3").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = rozrad.Text Then
jr = ActiveCell.Offset(0, 1).Value
End If
ActiveCell.Offset(1, 0).Select
Loop
'Поле довідника
koef.Text = jr
'Наступний вибір
Range(x20).Select
End Sub
Private Sub taruf_Change()
'Розрахунок
narah.Text = Str(Int(jf * jr * Val(kilc.Text) * 100) / 100)
nadb.Text = Str(Int(jf * jr * Val(kilc.Text) * 20) / 100)
vn.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 100) / 100)
pod.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 10) / 100)
vsogo.Text = Str(Int((Val(vn.Text) - Val(pod.Text)) * 100) / 100)
If Val(kilc.Text) < 100 Then
premia = 0
ElseIf Val(kilc.Text) < 250 Then
premia = Val(narah.Text) * 0.05
ElseIf Val(kilc.Text) < 350 Then
premia = Val(narah.Text) * 0.1
Else
premia = Val(narah.Text) * 0.2
End If
End Sub
Private Sub UserForm_Activate()
'Довідники
Range("b3").Select
Do While ActiveCell.Value <> ""
fah.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Range("d3").Select
Do While ActiveCell.Value <> ""
rozrad.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
'Таблиця обліку
Range("g3").Select
dat.Text = ActiveCell.Value
pk.Text = ActiveCell.Offset(0, 1).Value
fah.Text = ActiveCell.Offset(0, 2).Value
rozrad.Text = ActiveCell.Offset(0, 3).Value
kilc.Text = ActiveCell.Offset(0, 4).Value
taruf.Text = ActiveCell.Offset(0, 5).Value
koef.Text = ActiveCell.Offset(0, 6).Value
narah.Text = ActiveCell.Offset(0, 7).Value
premia.Text = ActiveCell.Offset(0, 8).Value
nadb.Text = ActiveCell.Offset(0, 9).Value
vn.Text = ActiveCell.Offset(0, 10).Value
pod.Text = ActiveCell.Offset(0, 11).Value
vsogo.Text = ActiveCell.Offset(0, 12).Value
'Активність кнопок
odyn.Enabled = False
pop.Enabled = False
zber.Enabled = False
canc.Enabled = False
'Доступ до полів і списків
dat.Locked = True
pk.Locked = True
fah.Locked = True
rozrad.Locked = True
kilc.Locked = True
taruf.Locked = True
koef.Locked = True
narah.Locked = True
premia.Locked = True
nadb.Locked = True
vn.Locked = True
pod.Locked = True
vsogo.Locked = True
End Sub
Private Sub vn_Change()
vn.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 100) / 100)
pod.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 10) / 100)
vsogo.Text = Str(Int((Val(vn.Text) - Val(pod.Text)) * 100) / 100)
End Sub
Private Sub vse_Click()
'Адреса активного запису
q100 = ActiveCell.Address
'Розрахунок
'Перехід на 1 запис
Range("s3").Select
'Початкове значення
Sum = Val(vsogo.Text)
'Кількість записів
Do While ActiveCell.Offset(1, 0).Value <> ""
ActiveCell.Offset(1, 0).Select
Sum = Sum + ActiveCell.Value
Loop
'Повернення на активний запис
Range(q100).Select
'Поля гол таблиці
dat.Text = ActiveCell.Value
pk.Text = ActiveCell.Offset(0, 1).Value
fah.Text = ActiveCell.Offset(0, 2).Value
rozrad.Text = ActiveCell.Offset(0, 3).Value
kilc.Text = ActiveCell.Offset(0, 4).Value
taruf.Text = ActiveCell.Offset(0, 5).Value
koef.Text = ActiveCell.Offset(0, 6).Value
narah.Text = ActiveCell.Offset(0, 7).Value
premia.Text = ActiveCell.Offset(0, 8).Value
nadb.Text = ActiveCell.Offset(0, 9).Value
vn.Text = ActiveCell.Offset(0, 10).Value
pod.Text = ActiveCell.Offset(0, 11).Value
vsogo.Text = ActiveCell.Offset(0, 12).Value
'Виведення результатів
MsgBox "Всього зарплати =" & Sum
End Sub
Private Sub vsogo_Change()
vn.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 100) / 100)
pod.Text = Str(Int((Val(narah.Text) + Val(premia.Text) + Val(nadb.Text)) * 10) / 100)
vsogo.Text = Str(Int((Val(vn.Text) - Val(pod.Text)) * 100) / 100)
End Sub
Private Sub zber_Click()
'Редагування
If i = 2 Then
ActiveCell.Offset(0, 1).Value = pk.Text
ActiveCell.Offset(0, 2).Value = fah.Text
ActiveCell.Offset(0, 3).Value = rozrad.Text
ActiveCell.Offset(0, 4).Value = kilc.Text
'Кнопки
odyn.Enabled = True
pop.Enabled = True
nast.Enabled = True
ost.Enabled = True
redag.Enabled = True
dop.Enabled = True
canc.Enabled = False
zber.Enabled = False
ex.Enabled = True
'Поля
dat.Locked = True
pk.Locked = True
fah.Locked = True
rozrad.Locked = True
kilc.Locked = True
taruf.Locked = True
koef.Locked = True
narah.Locked = True
premia.Locked = True
nadb.Locked = True
vn.Locked = True
pod.Locked = True
vsogo.Locked = True
pk.BackColor = &HFFFFFF
fah.BackColor = &HFFFFFF
rozrad.BackColor = &HFFFFFF
kilc.BackColor = &HFFFFFF
End If
'Доповнення
If i = 1 Then
Range("g3:s3").Select
Selection.Copy
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
ActiveCell.Offset(0, 1).Value = pk.Text
ActiveCell.Offset(0, 2).Value = fah.Text
ActiveCell.Offset(0, 3).Value = rozrad.Text
ActiveCell.Offset(0, 4).Value = kilc.Text
'Кнопки
odyn.Enabled = True
pop.Enabled = True
nast.Enabled = False
ost.Enabled = False
redag.Enabled = True
dop.Enabled = True
canc.Enabled = False
zber.Enabled = False
ex.Enabled = True
'Поля
dat.Locked = True
pk.Locked = True
fah.Locked = True
taruf.Locked = True
rozrad.Locked = True
kilc.Locked = True
narah.Locked = True
premia.Locked = True
nadb.Locked = True
vn.Locked = True
pod.Locked = True
vsogo.Locked = True
pk.BackColor = &HFFFFFF
fah.BackColor = &HFFFFFF
rozrad.BackColor = &HFFFFFF
kilc.BackColor = &HFFFFFF
End If
End Sub
