
- •Часть 2.
- •8 Архитектура проекта
- •8.1 Введение (основные элементы проекта и их построение)
- •8.1.2 Этапы написания проекта
- •Установка (и удаление) элементов управления на лист Excel
- •Установка начальных значения свойств элементов управления
- •Установка порядка расположение элементов управления (установка одного элемента управления над другим)
- •Создание пользовательской формы
- •Создание модулей макросов проекта
- •Создание событийных процедур элементов управления, а так же событийных процедур родительских объектов
- •Быстрый переход в событийную процедуру элемента управления
- •8.1.3 Изменение свойств проекта
- •8.1.4 Установка и снятие защиты проекта
- •9 Доступность подпрограмм и полей модулей проектов
- •9.1 Введение
- •9.2 Надстройки проектов
- •9.2 Ссылка на другой проект
- •10 Отладка кода программы в vba редакторе
- •10.1 “Компиляция” проекта
- •10.2 Запуск подпрограмм, не имеющих входных параметров из редактора vba
- •10.3 Пошаговый запуск подпрограмм, не имеющих входных параметров
- •10.4 Непосредственный запуск формы из редактора vba
- •10.5 Точки останова и оператор Stop
- •10.6 Аварийное прерывание работы программы приложением Excel
- •10.7 Принудительная остановка и принудительное прерывание программы пользователем
- •10.8 Окно локальных переменных и Окно отладки
- •11 Справочная система vba
- •11.1 Переход к справочной системе
- •11.2 Список имен потомков, методов и свойств объектов в окне редактора модуля
- •11.3 Просмотр списка операторов vba в окне редактора модуля (просмотр библиотек)
- •11.4 Окно просмотра свойств, методов, потомков и родителей объектов
- •12 Дополнительная информация
- •12.1 Параметры работы редактора vba
- •12.2 Защита от макровирусов
- •12.3 Причины, по которым код vba проекта может не исполняться
- •Приложение 1 Задание 1 (автозаполнение пола)
- •Задание 2 (автозаполнение комментариев к числам)
- •Задание 3 (заучиватель иностранных слов)
- •Задание 4 (телефонная книжка с поиском)
- •Задание 5 (программирование связей таблиц Excel)
- •Задание 6 (защита служебных полей таблицы Excel)
- •Приложение 2 (Программирование через редактирование макроса) Введение
- •Запись макроса в книгу Excel
- •Запуск макроса из меню.
- •Быстрый переход в код макроса
- •Пример создание процедуры через макрос.
- •Некоторые замечания по запуску макроса из событийных процедур
- •Назначение управляющих клавиш для запуска готового макроса Назначение управляющих клавиш макросам через меню приложений
- •Программное назначение управляющих клавиш макросам
- •Приложение 3( Создание меню ) Введение
- •Типы меню приложений
- •Создание (и удаление) подпунктов главного меню через меню приложений Создание (и удаление) подпункта главного меню
- •Создание (и удаление) пункта меню к макросу
- •Удаление меню
- •Добавление пунктов в меню
- •Свойства и методы пунктов меню
- •Переключатель в пункте меню
- •Коды пиктограмм пункта меню
- •Односеансное контекстное меню
- •После выбора пункта ПервыйУровень
- •После выбора пункта ВторойУровень1 Назначение управляющих клавиш к пункту меню
- •Приложение 4 ( Программная обработка модулей vba ) Введение
- •Экспорт модуля проекта в файл
- •Импорт модуля проекта из файла
- •Импорт модуля через “организатор” (данный код только для Word приложения)
- •Создание свойств и методов пользовательского класса
- •Создание событий пользовательского класса
- •Приложение 6 (Ссылка на приложение ms Office)
- •Приложение 7 (связь с таблицами и запросами базы данных) Введение
- •Связь с базой данных через указатели
- •Непосредственная загрузка таблицы базы данных в Excel таблицу
- •Форма для интерактивной работы с записью таблицы базы данных
- •С записями таблицы базы данных
- •Браузер таблиц и запросов базы данных
- •Методы поиска объекта Recordset
- •Пример использования метода Seek
- •Пример использования методов Find
- •Приложение 8 (Обращение к api-функциям) Введение
- •Скрытие и отображение панели задач через api функции
- •Запуск ярлыка и исполняемых файлов через api функцию
- •Приложение 9 (Основные понятия визуального программирования на доступных примерах)
- •Яблоко1.Сплющить
- •8 Архитектура проекта 3
- •8.1 Введение (основные элементы проекта и их построение) 3
- •Приложение 3( Создание меню ) 64
- •Приложение 4 ( Программная обработка модулей vba ) 90
- •Приложение 5 (Создание модуля класса) 94
- •Приложение 6 (Ссылка на приложение ms Office) 108 Приложение 7 (связь с таблицами и запросами базы данных) 113
- •Часть 2
Задание 5 (программирование связей таблиц Excel)
Переименуйте первый лист книги Excel на “Сотрудники” (кликните правой клавишей мыши по названию листа, и выберете пункт в контекстном меню переименовать)
Заполните лист Excel (не заполняя колонки “Пол”) и установите на него элемент управления поле со списком согласно рисунку 12.
Переименуйте второй лист книги Excel на “Пол”
Войдите в редактор VBA.
Активизируйте модуль книги ThisWorkbook , создайте и заполните событийную процедуру в нем.
Активизируйте модуль листа Excel “ Сотрудники ” и наберите в нем программу.
Активизируйте модуль листа Excel “ Пол ” и наберите в нем программу.
Закройте окно редактора VBA.
Включите режим программы
Сохраните книгу Excel и закройте ее.
Вновь откройте книгу Excel и разрешите работу макросов.
Используя поле со списком, заполните колонку “Пол”
Перейдите на лист пол и замените букву “М” на “Муж” , а букву “Ж” на “Жен”
П
ерейдите на лист “Сотрудники” и удостоверьтесь в правильности связи листов.
Рис12 Листы Excel
ThisWorkbook –
'Модуль ThisWorkbook
Private Sub Workbook_Open()
'загружаем список
Worksheets("Сотрудники").ComboBox1.Clear
Worksheets("Сотрудники").ComboBox1.AddItem _
Worksheets("Пол").Cells(2, 1).Text
Worksheets("Сотрудники").ComboBox1.AddItem _
Worksheets("Пол").Cells(3, 1).Text
End Sub
Лист1(Сотрудники) –
'Лист с именем "Сотрудники"
Dim Y As Long
Private Sub ComboBox1_Change()
If ComboBox1.Visible = False Or Y = 0 Or ComboBox1.Text = "" Then
Exit Sub
End If
If ComboBox1.Text = Worksheets("Пол").Cells(2, 1).Text Then
Cells(Y, 4).Value = "=Пол!$A$2"
Else
Cells(Y, 4).Value = "=Пол!$A$3"
End If
ComboBox1.Text = ""
Cells(Y, 4).Select
End Sub
Private Sub Worksheet_Activate()
ComboBox1.Visible = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'устанавливаем окно со списком на текущую строку
With Target
Y = .Row
ComboBox1.Visible = False
ComboBox1.Width = 15
If .Column = 4 Then
ComboBox1.Left = Cells(Y, 4).Left - ComboBox1.Width
Else
ComboBox1.Left = Cells(Y, 4).Left
End If
ComboBox1.Top = Cells(Y, 4).Top
ComboBox1.Height = Cells(Y, 4).Height
End With
ComboBox1.Visible = True
End Sub
Лист2(Пол) –
'Лист с именем "Пол"
Private Sub Worksheet_Activate()
Worksheets("Сотрудники").ComboBox1.Visible = False
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'загружаем список
Worksheets("Сотрудники").ComboBox1.Clear
Worksheets("Сотрудники").ComboBox1.AddItem Cells(2, 1).Text
Worksheets("Сотрудники").ComboBox1.AddItem Cells(3, 1).Text
End Sub
Задание 6 (защита служебных полей таблицы Excel)
Заполните первый лист электронной таблицы согласно рисунку 13.
Выделите весь лист Excel (нажать на верхний серый , пустой квадрат листа Excel, расположенный левея столбца индекса столбца A)
Установить разрешение на защиту всех ячеек листа Excel. ( Меню: Формат-Ячейки-Защита-Защищаемая ячейка)
Выделить ячейки начиная с В4 и кончая G4.
Снять разрешение на защиту выделенных ячеек листа Excel. (Меню: Формат-Ячейки-Защита-Защищаемая ячейка)
Установить защиту листа без указания пароля. (Меню: Сервис-Защита-Защитить лист)
В режиме конструктора установить на лист Excel элементы управления кнопки, и, заменить на них Caption согласно рисунку 12.
Перейдите в редактор VBA.
Активизируйте модуль первого листа Excel на котором расположены элементы управления кнопки.
Объявите глобальные переменные модуля
Создайте событийные процедуры кнопок и заполните их.
Закройте окно редактора VBA
Включите режим программы и опробуйте ее (попробуйте изменить название полей, удалить столбцы и т.п.).
Рис 13 Лист Excel
‘модуль листа
Dim y As Long, запрет As Boolean
‘Кнопка “Добавить”
Private Sub CommandButton1_Click()
Dim i
запрет = True
Rows(4).Select
'снять зашиту листа
ActiveSheet.Unprotect
Selection.Copy
i = 4
While Cells(i - 1, 1).Text <> "*"
i = i + 1
Wend
Rows(i).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Rows(i).Value = ""
Cells(i - 1, 1).Value = ""
Cells(i, 1).Value = "*"
Cells(i, 2).Select
'установить
ActiveSheet.Protect DrawingObjects:=True, _
Contents:=True, Scenarios:=True
запрет = False
End Sub
‘Кнопка Удалить
Private Sub CommandButton2_Click()
If y > 4 Or (y = 4 And Cells(y, 1).Text <> "*") Then
Rows(y).Select
'снять зашиту листа
ActiveSheet.Unprotect
If Cells(y, 1).Text = "*" Then
Cells(y - 1, 1).Value = "*"
End If
Rows(y).Delete
'установить
ActiveSheet.Protect DrawingObjects:=True, _
Contents:=True, Scenarios:=True
If y > 4 Then
Cells(y - 1, 2).Select
Else
Cells(y, 2).Select
End If
Else
MsgBox "Удалить эту запись нельзя"
Cells(4, 2).Select
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
y = Target.Row
With Target
If .Row > 3 And Not запрет Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton1.Top = Cells(.Row, 2).Top _
+ Cells(.Row, 2).Height - CommandButton1.Height
CommandButton2.Top = CommandButton1.Top
CommandButton1.Visible = True
CommandButton2.Visible = True
End If
End With
End Sub