
- •Часть 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
Пример использования методов Find
В форму, которую мы описываем в этом разделе, загрузите запрос приложения Access. Естественно, что на данную форму можно еще добавить объектов TextBox, для просмотра более чем двух полей запроса.
Рис. 30 Форма для поиска записи по условию
‘Модуль формы
Option Explicit
Const ПутькБазе = "c:\Мои документы\R.mdb"
Const ИмяТаблицы = "Таблица1"
'Объявляем переменную для ссылки на базу данных
Dim db As Database
'Объявляем переменную для ссылки на таблицу базы данных
Dim r As Recordset
Dim s As String
Sub ОбновитьПоля()
TextBox1.Value = r.Fields(0).Value
TextBox2.Value = r.Fields(1).Value
End Sub
Sub Поиск(ВидПоиска)
On Error GoTo st1
Select Case ВидПоиска
Case "FindPrevious"
r.FindPrevious Search1.Text
Case "FindFirst"
r.FindFirst Search1.Text
Case "FindNext"
r.FindNext Search1.Text
Case "FindLast"
r.FindLast Search1.Text
End Select
If r.NoMatch = True Then
MsgBox "Не найдена!"
Else
ОбновитьПоля
End If
Exit Sub
st1:
MsgBox "Ошибка команды для поиска"
End Sub
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
s = Search1.Text
Search1.Text = "[" & r.Fields(0).Name & "] = [" & r.Fields(0).Name & "]"
Search1.Enabled = False
ComboBox1.Visible = False
Else
Search1.Text = s
Search1.Enabled = True
ComboBox1.Visible = True
End If
End Sub
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex >= 0 And Search1.Enabled = True Then
Search1.Text = Search1.Text + " [" + ComboBox1.Text + "] ="
ComboBox1.Text = "(Выбор имени поля для команды)"
Search1.SetFocus
End If
End Sub
'Кнопка |<
Private Sub CommandButton1_Click()
Поиск "FindFirst"
End Sub
'Кнопка <
Private Sub CommandButton2_Click()
Поиск "FindPrevious"
End Sub
'Кнопка >
Private Sub CommandButton3_Click()
Поиск "FindNext"
End Sub
'Кнопка >|
Private Sub CommandButton4_Click()
Поиск "FindLast"
End Sub
Private Sub UserForm_Activate()
On Error Resume Next
r.FindFirst ("[" & r.Fields(0).Name & "] = [" & r.Fields(0).Name & "]")
If Err.Number <> 0 Then
Err.Clear
MsgBox "Загруженная таблица или запрос в форму не подерживает методы просмотра Find. Форма будет закрыта!"
Unload Me
End If
End Sub
Private Sub UserForm_Initialize()
'При загрузке формы устанавливаем указатели на базу
Set db = Workspaces(0).OpenDatabase(ПутькБазе)
Set r = db.OpenRecordset(ИмяТаблицы)
'Имя таблицы в заголовок формы
Me.Caption = ИмяТаблицы
'Загрузка имен полей
Label1.Caption = r.Fields(0).Name
Label2.Caption = r.Fields(1).Name
'Коментарии к полям ввода
Label123.Caption = "Ввод команды для поиска"
ComboBox1.Text = "(Выбор имени поля для команды)"
Dim i As Long
Search1.Text = ""
ComboBox1.Clear
For i = 0 To r.Fields.Count - 1
ComboBox1.AddItem r.Fields(i).Name
Next i
ОбновитьПоля
End Sub
Приложение 8 (Обращение к api-функциям) Введение
Иногда возникает необходимость обратиться непосредственно к операционной системе. Это требует использование дополнительных функций. Доступ к таким функциям осуществляется через интерфейс прикладных программ – Win 32 API (Application Programming Interface). При помощи функций Win 32 API можно выполнить такие действия в VBA или в VB, которые невозможно спрограммировать обычными операторами VB. Или при помощи данных функций можно заставить работать программу VB значительно быстрей. Объявляется API функции или процедура в главной области модуля следующим образом:
‘Объявление процедуры
[Public/Private] Declare Sub Имя Lib "имяБиблиотеки" _
[Alias ИмяВБиблиотеке ] ( [списокАргументов] )
‘Объявление функции
[Public / Private] Declare Function Имя Lib "имяБиблиотеки" _
[Alias ИмяВБиблиотеке ] ( [списокАргументов] ) [ As Тип]
Как видно из форматов объявления, объявление подпрограмм API несколько напоминает объявления заголовка обычных подпрограмм. Надо знать, что Имя подпрограмм должно набираться с учетом регистра символов. За служебным словом Lib указывается имя библиотеки, в которой находится подпрограмма. Если не опущено служебное слово Alias, то за ним вводится настоящее имя вызываемой подпрограммы (ИмяВБиблиотеке), а параметр Имя является псевдонимом для вызова объявленной API подпрограммы из модуля VBA. Причина назначения псевдонима может быть разная, просто смена имени, или смена имени подпрограммы, если оно конфликтует с другими идентификаторами проекта или библиотек, или если имя содержит запретный символ для идентификатора языка VBA.
Для получения имен API функций , полезно иметь установленный на компьютер VB 6.0 (или более старшую версию языка). Для просмотра имен API функций загружают приложение API Viewer следующим образом:
Запустить Microsoft Visual Basic 6.0
Запустить приложение API Viewer через меню Visual Basic: Add-Ins - API Viewer
В появившемся окне войти в меню: File – Load Text File
Открыть библиотеку имен функций - Win32api
В разделе API Type: выбрать пункт Declare. В разделе Available Items: выбрать двойным кликом мыши имя необходимой функции. В разделе Selected Items: скопировать в буфер обмена объявление выбранной функции. (см. Рис. 31)
Рис. 31 Окно приложения API Viewer