vba excel создание табеля успеваемости
TRANSCRIPT
![Page 1: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/1.jpg)
Пользовательские формы в Excel
Разработка VBA-приложений
![Page 2: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/2.jpg)
Приложение
Табель успеваемости
![Page 3: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/3.jpg)
Удобный способ хранения информации
![Page 4: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/4.jpg)
Общие требования к приложению
I. Удобный способ хранения информацииII. Возможность быстрого ввода оценок по всем
предметам и возможность просмотра всех оценок за отдельный день
III. Возможность просмотра всех оценок и среднего балла по всем предметам
IV. Создание графического пользовательского интерфейса (создание своего меню)
![Page 5: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/5.jpg)
I. Этапы создания рабочей книги
1. Создание рабочего листа с именем предмета (Русский язык)
2. Создание заголовков таблицы на рабочем листе• Дата• Оценка• Примечание• «Вес» оценки
3. Задание форматов для каждого столбца таблицы
4. Многократным копированием создаем определенное количество листов
![Page 6: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/6.jpg)
Табель успеваемости
![Page 7: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/7.jpg)
Табель успеваемости формат ячеек
![Page 8: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/8.jpg)
Табель успеваемости создание копии листа
Вызвать контекстное меню листа и выбрать Переместить/скопировать
В диалоговом окне выбрать (переместить в конец)
И установить флажок «Создать копию»
![Page 9: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/9.jpg)
Табель успеваемости новый лист
![Page 10: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/10.jpg)
Табель успеваемости задание имени для нового листа
1. Двойным щелчком выделяем ярлычок листа
![Page 11: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/11.jpg)
Табель успеваемости задание имени для нового листа
1. Вводим новое имя «Литература»
![Page 12: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/12.jpg)
Создание оставшихся листов
1. Алгебра2. Геометрия3. Физика 4. Химия
5. Биология6. Информатика7. Английский язык8. Физкультура
Многократно повторяя операцию Многократно повторяя операцию копирования листа, создаем следующие копирования листа, создаем следующие рабочие листы:рабочие листы:
![Page 13: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/13.jpg)
Вид формы
![Page 14: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/14.jpg)
II. Вход в интегрированную среду разработки VBA
![Page 15: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/15.jpg)
Добавление новой формы в проект
![Page 16: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/16.jpg)
Созданная форма (frmВвод)
![Page 17: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/17.jpg)
Размещение элементов управления в форме
1. Добавить ЭУ Microsoft Date and Time Picker Control на панель инструментов, через контекстное меню, командой:
Additional Controls…
![Page 18: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/18.jpg)
Размещение элементов управления в форме
• Установить флажок напротив пункта:– Microsoft Date and Time Picker Control
![Page 19: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/19.jpg)
Этапы создания ЭУ• Создать календарь (DTPicker)• Создать две надписи (Label)• Создать текстовое поле (TextBox)• Создать рамку (Frame)• Внутри рамки разместить 3 переключателя (OptionButton)
![Page 20: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/20.jpg)
Этапы создания ЭУ
![Page 21: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/21.jpg)
Свойство Tag ЭУ TextBox
Значение данного свойства равно имени соответствующего листа
Пример для txtРусс – Русский язык
![Page 22: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/22.jpg)
Создание всех ЭУ
1. Выделить созданные ЭУ2. Скопировать их3. Вставить из буфера обмена и задать новые
имена и значения свойств• Имена должны различаться только в
русскоязычной части• Русскоязычная часть состоит из первых 4-х букв
названия рабочего листа (Русс, Лите, Алге, и т.д.)
![Page 23: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/23.jpg)
Вид формы
![Page 24: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/24.jpg)
Размещение кнопок на форме
• Всего 4 кнопки:– Просмотр (cmdПросмотр)– Ввод (cmdВвод)– Очистить (cmdОчистить)– Выход (cmdВыход)
• Выбрать ЭУ CommandButton • Разместить в левом нижнем углу формы• Задать имя и надпись• Остальные 3 создаются по аналогии
![Page 25: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/25.jpg)
Вид формы
![Page 26: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/26.jpg)
Алгоритм проверки текстовых полей формы (кнопка Ввод)
1. Опросить 1 ЭУ из семейства ЭУ2. Если это текстовое поле, то
1. strОценка=TRIM(Имя_Поля.Text)2. Если strОценка <> «», то
1. Определить имя соответствующего листа (Tag)2. Определить кол-во занятых строк начиная с ячейки А13. В первую свободную ячейку столбца А вставить дату4. В первую свободную ячейку столбца В - оценку
3. Конец если3. Конец если4. Перейти к пункту 1
![Page 27: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/27.jpg)
Оператор выполнения группы инструкций для каждого элемента
семейства
For Each Элемент In Группа[инструкция][Exit For][инструкция]
Next [Элемент]
![Page 28: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/28.jpg)
Код программыPrivate Sub cmdВвод_Click()Dim txt As Object For Each txt In Controls If txt.Tag <> "" Then
strОценка = Trim(txt.Text) If strОценка <> "" Then strИмяЛиста = txt.Tag Worksheets(strИмяЛиста).Select intКолСтрок = Worksheets(strИмяЛиста).Range("A1").CurrentRegion.Rows.Count 'определяем кол-во заполненных строк по ячейке 'содержащей дату начиная с ячейки A1 Worksheets(strИмяЛиста).Cells(intКолСтрок + 1, 1).Value = dtpДата.Value Worksheets(strИмяЛиста).Cells(intКолСтрок + 1, 2).Value = strОценкаКод определения состояния переключателей End IfEnd IfNext txt
![Page 29: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/29.jpg)
Определение типа урока и «веса» оценки
strИмя1 = "opt1" & Mid(strИмяЛиста, 1, 4)strИмя2 = "opt2" & Mid(strИмяЛиста, 1, 4)strИмя3 = "opt3" & Mid(strИмяЛиста, 1, 4)If Me.Controls(strИмя1).Value Then strВес = "1" strТип = "обычный"ElseIf Me.Controls(strИмя2).Value Then strВес = "1.5" strТип = "самостоятельная работа"ElseIf Me.Controls(strИмя3).Value Then strВес = "2" strТип = "контрольная работа"End IfWorksheets(strИмяЛиста).Cells(intКолСтрок + 1, 3).Value = strТипWorksheets(strИмяЛиста).Cells(intКолСтрок + 1, 4).Value = strВес
![Page 30: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/30.jpg)
Код программы для кнопки Очистить
Private Sub cmdОчистить_Click()Dim txt As Object For Each txt In Controls If txt.Tag <> "" Then txt.Text = "" End If Next txt
End Sub
![Page 31: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/31.jpg)
Код программы для кнопки Выход
Private Sub cmdВыход_Click() EndEnd Sub
![Page 32: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/32.jpg)
Код программы для кнопки Просмотр
Private Sub cmdПросмотр_Click()Me.HidefrmПросмотр.ShowEnd Sub
![Page 33: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/33.jpg)
Форма Просмотр (frmПросмотр)
![Page 34: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/34.jpg)
Код формы
Private Sub UserForm_Initialize()Dim strВсеОценки As StringDim intСуммОценки As IntegerDim sngСуммБалл As Single
![Page 35: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/35.jpg)
Код формы
For i = 1 To Worksheets.Count Worksheets(i).Select strИмяЛиста = ActiveSheet.Name intКолСтрок = Worksheets(i).Range("A1").CurrentRegion.Rows.Count strИмяПоля = "txt" & Mid(strИмяЛиста, 1, 4) strИмяПоля1 = strИмяПоля & "Ср" For j = 2 To intКолСтрок intСуммОценки = intСуммОценки + (Cells(j, 2).Value * Cells(j, 4)) sngСуммБалл = sngСуммБалл + Cells(j, 4).Value strВсеОценки = strВсеОценки & " " & Cells(j, 2).Value Next j Me.Controls(strИмяПоля).Text = Trim(strВсеОценки)
![Page 36: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/36.jpg)
Код формы
If sngСуммБалл <> 0 Then Me.Controls(strИмяПоля1).Text =
CStr(Format((intСуммОценки) / (sngСуммБалл), "fixed")) Else Me.Controls(strИмяПоля1).Text = CStr(Format(0, "fixed")) End If strВсеОценки = "" intСуммОценки = 0 sngСуммБалл = 0 Next iEnd Sub
![Page 37: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/37.jpg)
Код кнопок Ввод и Выход
Private Sub cmdВвод_Click() Me.Hide frmВвод.ShowEnd Sub
Private Sub cmdВыход_Click() EndEnd Sub
![Page 38: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/38.jpg)
III. Создание собственного меню
Private Sub Workbook_Open()Dim MyBar As CommandBarDim MyButton(1 To 2) As CommandBarButtonWith Application .DisplayFormulaBar = False .CommandBars("Formatting").Visible = False .CommandBars("Standard").Visible = FalseEnd With
![Page 39: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/39.jpg)
III. Создание собственного меню'Создание своей панелиSet MyBar = Application.CommandBars.Add(Name:="Моя панель", _ Position:=msoBarTop, MenuBar:=False, Temporary:=True) 'Создание своих кнопокWith MyBar .Visible = True .Protection = msoBarNoMove + msoBarNoChangeVisible _ + msoBarNoCustomize With .Controls Set MyButton(1) = .Add(Type:=msoControlButton, ID:=1, Temporary:=True) Set MyButton(2) = .Add(Type:=msoControlButton, ID:=1, Temporary:=True) End WithEnd With
![Page 40: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/40.jpg)
III. Создание собственного меню
'Установка свойств кнопокWith MyButton(1) .Caption = "Просмотр" .TooltipText = "Просмотр всех оценок" .Style = msoButtonCaption .OnAction = "Просмотр"End WithWith MyButton(2) .Caption = "Ввод" .TooltipText = "Ввод оценок" .Style = msoButtonCaption .OnAction = "Ввод"End With
![Page 41: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/41.jpg)
III. Удаление собственного меню при закрытии книги
Private Sub Workbook_BeforeClose(Cancel As Boolean)With Application .DisplayFormulaBar = True .CommandBars("Formatting").Visible = True .CommandBars("Standard").Visible = TrueEnd With'Удаление созданной панелиDim bar As CommandBarFor Each bar In Me.Application.CommandBars If Not bar.BuiltIn Then bar.DeleteNextEnd Sub
![Page 42: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/42.jpg)
Стандартный модуль
Sub Ввод() frmВвод.ShowEnd Sub
Sub Просмотр() frmПросмотр.ShowEnd Sub
![Page 43: VBA Excel создание табеля успеваемости](https://reader036.vdocuments.pub/reader036/viewer/2022082206/55c2c1a8bb61ebd2788b4694/html5/thumbnails/43.jpg)
Для самостоятельной работы
• Описать событие Change() для ЭУ Microsoft Date and Picker Control, так чтобы при изменение даты выводились все оценки по предметам за этот день.
• Подсказка. Данное событие противоположно событию Click() для кнопки Ввод формы «Ввод оценок»