
- •Часть 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
Задание 3 (заучиватель иностранных слов)
Переименуйте первый лист книги Excel на “Программа” (кликните правой клавишей мыши по названию листа, и выберете пункт в контекстном меню переименовать)
Измените размер ячеек “A1” и “А2” согласно рисунку 9.
В ячейке “A1” установите крупный шрифт, а в ячейке “А2” ,согласно рисунку, установите элементы управления: 2 кнопки и поле со списком.
Поменяйте Caption кнопок согласно рисунку 9.
Переименуйте второй лист книги Excel на “Словарь1”, и заполните его согласно рисунку (таким же образом можно сделать “Словарь2” с другими словами)
Войдите в редактор VBA.
Активизируйте модуль листа Excel “Программа”.
Объявите глобальные переменные проекта и создайте не событийную процедуру “Проверка”.
Создайте событийные процедуры элементов управления и заполните их.
Закройте окно редактора VBA.
Включите режим программы и опробуйте ее через соответствующие элементы управления.
Рис9 Листы Excel
Лист –1
‘ниже модуль первого листа
Dim i As Long, j As Long
‘процедура проверки правильности выбранного имени словаря
Sub Проверка()
Dim i As Long, flag As Boolean
flag = False
For i = 1 To ThisWorkbook.Worksheets.Count
If ThisWorkbook.Worksheets(i).Name <> _
ThisWorkbook.ActiveSheet.Name _
And ComboBox1.Text = _
ThisWorkbook.Worksheets(i).Name Then
flag = True
Exit For
End If
Next i
If ComboBox1.Text = "" Or flag = False Then
ComboBox1.Text = ""
MsgBox "Словарь не выбран!"
End
End If
End Sub
‘событийная процедура поля со списком
Private Sub ComboBox1_MouseDown(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim i As Long
ComboBox1.Clear
For i = 1 To ThisWorkbook.Worksheets.Count
If ThisWorkbook.Worksheets(i).Name <> _
ThisWorkbook.ActiveSheet.Name Then
ComboBox1.AddItem ThisWorkbook.Worksheets(i).Name
End If
Next i
End Sub
‘событийная процедура кнопки “Новое слово”
Private Sub CommandButton1_Click()
Проверка
With ThisWorkbook.Worksheets(ComboBox1.Text)
If .Cells(i + 1, j + 1).Text = "" Then
i = 1
Else
i = i + 1
End If
Cells(1, 1) = .Cells(i, j + 1)
End With
End Sub
‘событийная процедура кнопки “Перевернуть”
Private Sub CommandButton2_Click()
Проверка
j = 1 - j
If i = 0 Then i = 1
With ThisWorkbook.Worksheets(ComboBox1.Text)
Cells(1, 1) = .Cells(i, j + 1)
End With
End Sub
Задание 4 (телефонная книжка с поиском)
Заполните первый лист электронной таблицы согласно рисунку 10.
В режиме конструктора установите на лист Excel элемент управления кнопку и замените на ней Caption согласно рисунку.
Перейдите в редактор VBA.
Вставьте новый модуль формы в проект (Меню: Вставка-Форма).
Перейдите в режим конструирования формы (Меню: Вид-Объект)
Замените Caption формы согласно рисунку 11.
Включите панель элементов для формы (Меню: Вид-панель элементов)
Установите на форму согласно рисунку элементы управления надпись, поле, кнопку, выключатель и поменяйте Caption установленных объектов, а на объекте Поле поменяйте свойство Text на пустую строку.
Перейдите в редактор модуля формы (Меню: Вид-Программа)
Объявите глобальные переменные модуля формы и создайте не событийную процедуру “ otbor ”.
Создайте событийные процедуры элементов управления формы.
Активизируйте модуль первого листа Excel на котором расположен элемент управления кнопка.
Создайте событийную процедуру кнопки и заполните ее.
Закройте окно редактора VBA
Включите режим программы и опробуйте ее.
|
A |
B |
C |
|
Иванов В.В. |
131-23-46 |
|
|
Петров П.П. |
123-34-38 |
|
|
Сидоров А.А. |
112-33-16 |
|
|
Максимов П.П. |
445-12-64 |
|
|
Иванов В.Г. |
118-96-30 |
|
|
Сидорова Л.Л. |
921-30-76 |
|
Рис 10 Лист Excel
Рис 11 Окно Формы
UserForm1 -
‘ниже модуль формы
Dim sf As String , N as Long
Sub otbor(n1 As Long, ByVal n As Long)
n1 = n1 + 1
Worksheets(2).Range("A" + CStr(n1)).Value = _
Worksheets(1).Range("A" + CStr(n)).Text
Worksheets(2).Range("B" + CStr(n1)).Value = _
Worksheets(1).Range("B" + CStr(n)).Text
End Sub
Private Sub TextBox1_Change()
sf = TextBox1.Text
End
‘кнопка на форме
Private Sub CommandButton1_Click()
Dim s As String
If sf = "" Then
MsgBox "Отбор осуществляется по введенному тексту!"
Exit Sub
End If
n = 2
n1 = 1
'Очистка второго листа
While Worksheets(2).Range("A" + CStr(n)).Text <> "" _
Or Worksheets(2).Range("B" + CStr(n)).Text <> ""
Worksheets(2).Range("A" + CStr(n) + ":B" + CStr(n)).Value = ""
n = n + 1
Wend
n = 2
'Поиск нужной фамилии в первом листе
While Worksheets(1).Range("A" + CStr(n)).Text <> ""
s = Worksheets(1).Range("A" + CStr(n)).Text
If Mid(s, 1, Len(sf)) = sf Then
If CheckBox1.Value = True Then
If Mid(s, Len(sf) + 1, 1) = " " Or Len(s) = Len(sf) Then
otbor n1, n
End If
Else
otbor n1, n
End If
End If
n = n + 1
Wend
Worksheets(2).Select
Hide
End Sub
Лист1-
‘ниже модуль листа
‘кнопка на листе
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub