WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Автоматизацiя контролю вiдвiдування студентами занять - Контрольна робота

Автоматизацiя контролю вiдвiдування студентами занять - Контрольна робота

""
Лист1.ComboBox1.Enabled = True
Лист1.ComboBox2.Enabled = True
Лист1.CommandButton2.Enabled = False
Лист1.CommandButton1.Enabled = True
Лист1.CommandButton3.Enabled = False
Лист1.Range("A1").Value = "No"
End If
End If
End Sub
Макрос клавіші "Створити" на листі "Звіт"
Реакція програми на натиснення клавіші "Створити":
" Очистка листа від попереднього звіту
" Для кожного вибраного в ListBox листа:
o Вивід "шапки"
o Перегляд даних і перевірка даних по кількості пропусків
o Копіювання відібраних даних на лист "Звіт"
" Створення узагальненого звіту
" Створення діаграми
Private Sub CommandButton1_Click()
RW = 17
GR = 0
Range("A17:AI5000").Clear
For I = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(I) Then
'SH - Назва листа даних з поточною групою і місяцем
SH = Mid(ListBox1.List(I), 38, 6)
'Друкуємо шапку для групи і місяця
With Range("A" + Mid(Str(RW), 2) + ":AI" + Mid(Str(RW), 2))
.Merge
.HorizontalAlignment = xlCenter
.Font.Bold = True
.Value = Mid(ListBox1.List(I), 1, 29)
.Interior.ColorIndex = 4
End With
RW = RW + 1
PN = 1
'Шапка (З днями)
Range("A16:AI16").Copy
Range("A" + Mid(Str(RW), 2)).PasteSpecial
With Range("A" + Mid(Str(RW), 2) + ":AI" + Mid(Str(RW), 2))
.Interior.ColorIndex = 4
.Font.Bold = True
.Font.Color = 0
End With
RW = RW + 1
'Переглядаємо діапазон "AH3:AH100"
For Each Cel In Sheets(SH).Range("AH3:AH100")
'Але крім порожніх комірок і крім "ВСЬОГО"
If (Cel.Value "") And (Sheets(SH).Range("B" + Mid(Str(Cel.Row), 2)).Value "ВСЬОГО") Then
'Для тих комірок, що задовільняють всі вищеперечислені умови перевіряємо
'чи підходять вони по критеріях відбору за максимально дозволеними кількостями
If (Cel.Value > Sheets("Звіт").Range("N3").Value) Or _
(Sheets(SH).Range("AI" + Mid(Str(Cel.Row), 2)).Value > Sheets("Звіт").Range("R3").Value) Then
'Номер
Range("A" + Mid(Str(RW), 2)).Value = PN
PN = PN + 1
'Копіюємо прізвище і дані
Sheets(SH).Range("B" + Mid(Str(Cel.Row), 2) + ":AI" + Mid(Str(Cel.Row), 2)).Copy
Range("B" + Mid(Str(RW), 2) + ":AI" + Mid(Str(RW), 2)).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
RW = RW + 1
End If
End If
Next
'ВСЬОГО
Range("B" + Mid(Str(RW), 2)).Value = "ВСЬОГО"
Range("A" + Mid(Str(RW), 2) + ":" + "AI" + Mid(Str(RW), 2)).Font.Bold = True
If PN > 1 Then Range("AH" + Mid(Str(RW), 2)).FormulaR1C1 = "=SUM(R[-" + Mid(Str(PN - 1), 2) + "]C:R[-1]C)" _
Else Range("AH" + Mid(Str(RW), 2)).Value = 0
If PN > 1 Then Range("AI" + Mid(Str(RW), 2)).FormulaR1C1 = "=SUM(R[-" + Mid(Str(PN - 1), 2) + "]C:R[-1]C)" _
Else Range("AI" + Mid(Str(RW), 2)).Value = 0
With Range("C" + Mid(Str(RW), 2) + ":AG" + Mid(Str(RW), 2))
.Merge
.Value = ListBox1.List(I)
.Font.ColorIndex = 2
End With
RW = RW + 1
GR = GR + 1
End If
Next I
'ЗВЕДЕНИЙ ЗВІТ
'(Заголовок)
PN = 0
With Range("A" + Mid(Str(RW), 2) + ":AI" + Mid(Str(RW), 2))
.Merge
.Interior.ColorIndex = 4
.HorizontalAlignment = xlCenter
.Font.Bold = True
.Font.Size = 18
.Value = "Зведений звіт відвідування"
End With
'(Дані по групам за місяць)
RW = RW + 1
For Each CL In Range("B17:B" + Mid(Str(RW), 2))
If CL.Value = "ВСЬОГО" Then
PN = PN + 1
With Range("B" + Mid(Str(RW), 2) + ":AG" + Mid(Str(RW), 2))
.Merge
.Value = Mid(Range("C" + Mid(Str(CL.Row), 2)).Value, 1, 29)
End With
Range("AH" + Mid(Str(RW), 2)).Value = Range("AH" + Mid(Str(CL.Row), 2)).Value
Range("AI" + Mid(Str(RW), 2)).Value = Range("AI" + Mid(Str(CL.Row), 2)).Value
RW = RW + 1
End If
Next CL
'(Всього)
With Range("B" + Mid(Str(RW), 2) + ":AG" + Mid(Str(RW), 2))
.Merge
.Value = "ВСЬОГО"
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With
Range("AH" + Mid(Str(RW), 2) + ":AG" + Mid(Str(RW), 2)) _
.FormulaR1C1 = "=SUM(R[-" + Mid(Str(PN), 2) + "]C:R[-1]C)"
Range("AI" + Mid(Str(RW), 2) + ":AG" + Mid(Str(RW), 2)) _
.FormulaR1C1 = "=SUM(R[-" + Mid(Str(PN), 2) + "]C:R[-1]C)"
If GR > 2 Then
Range("AH" + Mid(Str(RW - PN), 2) + ":AI" + Mid(Str(RW - 1), 2)).Activate
Charts.Add
ActiveChart.SetSourceData Source:=Sheets("Звіт").Range("AH" + Mid(Str(RW - PN), 2) + ":AI" + Mid(Str(RW - 1), 2))
ActiveChart.Location Where:=xlLocationAsNewSheet
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).XValues = "=Звіт!R" + Mid(Str(RW - PN), 2) + "C2:R" + Mid(Str(RW - 1), 2) + "C33"
ActiveChart.SeriesCollection(1).Name = "=""Б"""
ActiveChart.SeriesCollection(2).XValues = "=Звіт!R" + Mid(Str(RW - PN), 2) + "C2:R" + Mid(Str(RW - 1), 2) + "C33"
ActiveChart.SeriesCollection(2).Name = "=""П"""
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Діаграма відвідування"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Дні"
End With
ActiveChart.HasLegend = True
ActiveChart.Legend.Position = xlTop
ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowValue, _
AutoText:=True, LegendKey:=False
ActiveChart.SeriesCollection(2).ApplyDataLabels Type:=xlDataLabelsShowValue, _
AutoText:=True, LegendKey:=False
End If
End Sub
Текст макроса радіо-клавіші "Сортувати по групах" на листі "Звіт"
Private Sub OptionButton1_Click()
ListBox1.Clear
M = 1
For Each Wh In Worksheets
If Mid(Wh.Name, 3, 1) = "-" Then
A(M) = "Група " + Mid(Wh.Name, 4) + Mid(Wh.Name, 1, 2) + Sheets(Wh.Name).Range("C1")
A(M) = A(M) + Space(30 - Len(A(M))) + "(Лист " + Wh.Name + ")"
M = M + 1
End If
Next
Sort
For I = 1 To M - 1
A(I) = Mid(A(I), 1, 9) + " - " + Mid(A(I), 12)
ListBox1.AddItem (A(I))
Next I
End Sub
Текст макроса радіо-клавіші "Сортувати по місяцях" на листі "Звіт"
Private Sub OptionButton2_Click()
ListBox1.Clear
M = 1
For Each Wh In Worksheets
If Mid(Wh.Name, 3, 1) = "-" Then
A(M) = Wh.Name + Sheets(Wh.Name).Range("C1")
A(M) = A(M) + Space(30 - Len(A(M))) + "(Лист " + Wh.Name + ")"
M = M + 1
End If
Next
Sort
For I = 1 To M - 1
d = A(I)
A(I) = Mid(A(I), 7, 10) + " " + "Група " + Mid(A(I), 4, 3)
A(I) = A(I) + Space(30 - Len(A(I))) + Mid(d, 30)
Next I
For I = 1 To M - 1
ListBox1.AddItem (A(I))
Next I
End Sub
Текст макроса Sort на листі "Звіт"
Dim A(500)
Dim M
Sub Sort()
For I = 1 To M - 1
For J = 1 To I - 1
If A(I) < A(J) Then
T = A(I)
A(I) = A(J)
A(J) = T
End If
Next J
Next I
End Sub
Доцільність автоматизації.
Даний програмний продукт значно допомагає систематизувати дані відвідування студентами занять і видати наочні результати у вигляді звітів і діаграм.
Loading...

 
 

Цікаве