Чтение онлайн

на главную - закладки

Жанры

Офисное программирование
Шрифт:

фильтрация записей таблицы по определенному признаку или группе признаков (меню <Данные> <Фильтр>) и др.

С помощью этих средств осуществляется управление базой в Excel. Данный факт весьма облегчает задачу автоматизации использования баз в Excel. Сводится это к возможности применения макрорекордера для программной реализации базы в Excel с помощью VBA.

Пример 59. Создать приложение с пользовательским интерфейсом по заполнению и обработке базы данных туристической фирмы «Балашов-Тур». База данных состоит из двух рабочих листов: «База Данных» и «Фильтр».

После загрузки программа сама

будет создавать свой интерфейс, отображать название окна приложения и, если на рабочем листе нет заголовков полей, создавать их. Интерфейс программы будет состоять из нескольких диалоговых окон.

Технология выполнения

Первое диалоговое окно уже существует (пример 57), оно реализует заполнение базы данных. С помощью второго диалогового окна будет реализовываться сортировка записей таблицы.

Примечание. Пересохраните работу Пример57 как Пример59.

Второе диалоговое окно (UserForm2, рис. 113) позволяет осуществлять сортировку записей таблицы (рис. 114) по одному из двух критериев:

продолжительности тура;

фамилии.

Рис. 113. Форма 2 для примера 59

Также предоставляется выбор сортировки по возрастанию или по убыванию. Интересной особенностью этого диалогового окна является название второй кнопки. При появлении на экран кнопка носит название «Отмена», а после осуществления сортировки получает название «Закрыть».

Для облегчения написания кода сортировки следует воспользоваться макрорекордером. После включения записи выполните следующие шаги:

1) выделите записи базы данных;

2) выберите в меню <Данные> <Сортировка>;

3) при появлении диалогового окна выберите поле, по которому осуществляется сортировка, а также ее направление;

4) нажмите Enter;

5) выключите макрорекордер.

При просмотре полученного макроса можно обнаружить несколько операторов, которые станут шаблоном для кода. Это выделение области сортировки (записей базы) и собственно сама процедура сортировки. Примерно так:

Range(«A2:H5»).Select

Selection.Sort Key1:=Range(«A2»), Order1:=xlAscending, Key2:=Range(«B2»), Order2:=xlAscending, Key3:=Range(«E2»), Order3:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Что придется корректировать:

1) область сортировки. Необходимость корректирования вполне ясна: количество записей может быть меньше либо больше, чем в данный момент. Для определения числа записей воспользуемся известным приемом (см. пример 57);

2) поле, по которому осуществляется сортировка. Необходимо предусмотреть выбор поля перед самой сортировкой (в элементе управления «Поле со списком» (ComboBox1));

3) направление сортировки. Также нужно предусмотреть выбор одного варианта из двух (переключатель OptionButton1 или OptionButton2).

Создайте форму UserForm2. Затем в окне ее кода создайте процедуру для кнопки ОК.

Private Sub CommandButton1_Click

КоличествоСтрок =

Application.CountA(ActiveSheet.Columns(1))

'Количество записей в базе

Range(Cells(2, 1), Cells(КоличествоСтрок, 8)).Select

'выделение области сортировки

If ComboBox1.Value = «фамилии» Then

KeySort = «A2»

'ключ сортировки – поле с фамилией

Else

KeySort =

«H2»

'ключ сортировки – поле со сроком поездки

End If

'Сортировка

If OptionButton1.Value Then

'по возрастанию

Selection.Sort Key1:=Range(KeySort), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Else

'по убыванию

Selection.Sort Key1:=Range(KeySort),

Order1:=xlDescending,Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

End If

Range(«A2»).Select

'установка активной ячейки с первой фамилией

CommandButton2.Caption = «Закрыть»

'изменение названия второй кнопки

End Sub

Вторая кнопка закрывает форму и возвращает свое исходное имя.

Private Sub CommandButton2_Click

CommandButton2.Caption = «Отмена»

UserForm2.Hide

End Sub

Для инициализации формы UserForm2 откройте Модуль1 и вставьте процедуру инициализации формы.

Public Sub UserForm2_Initialize

' обратите внимание, что процедура глобальная!

UserForm2.ComboBox1.List = Array(«фамилии», «продолжительности тура»)

UserForm2.ComboBox1.ListIndex = 0

UserForm2.Show

End Sub

Рис. 114. Вывод данных на лист excel

Конструирование интерфейса. Презентация

Для создания пользовательского интерфейса следует выполнить следующее:

1) установить новое название приложения «Туристы фирмы Балашов-Тур»;

2) закрыть строку формул;

3) убрать панели инструментов Стандартная и Форматирование;

4) дать новое имя листу с базой;

5) добавить новую панель инструментов с кнопкой «Сортировка».

Новое имя листу задайте вручную. Остальное будет сделано в процедуре, обрабатывающей событие открытия рабочей книги.

Private Sub Workbook_Open

Application.Caption = «Туристы фирмы Балашов-тур»

Application.DisplayFormulaBar = False

'Закрытие строки формул окна Excel

Application.CommandBars(«Standard»).Visible = False

Application.CommandBars(«Formatting»).Visible = False

Sheets(«База данных»).Select

With Application.CommandBars.Add(Name:="Рабочая панель инструментов",Position:=msoBarTop, MenuBar:=False, Temporary:=True)

Visible = True

With.Controls

'кнопка Сортировка

With.Add(Type:=msoControlButton, ID:=1)

Caption = «Сортировка»

TooltipText = «Сортировка»

Style = msoButtonCaption

OnAction = «Module1.UserForm2_Initialize»

'кнопка запускает UserForm2_Initialize

End With

End With

End With

UserForm1.Show

End Sub

Для возвращения внешнего вида приложения после закрытия базы следует обработать событие «Непосредственно перед закрытием».

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.Caption = Empty

'Установка заголовка окна приложения по умолчанию

Application.CommandBars(«Standard»).Visible = True

Application.CommandBars(«Formatting»).Visible = True

End Sub

Теперь сохраните все изменения и закройте Excel. Далее при открытии файла с базой вы увидите новый интерфейс приложения и подгруженную форму с регистрацией клиента.

Поделиться:
Популярные книги

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Седина в бороду, Босс… вразнос!

Трофимова Любовь
Юмор:
юмористическая проза
5.00
рейтинг книги
Седина в бороду, Босс… вразнос!

Камень Книга седьмая

Минин Станислав
7. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Камень Книга седьмая

Воронцов. Перезагрузка. Книга 5

Тарасов Ник
5. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
6.00
рейтинг книги
Воронцов. Перезагрузка. Книга 5

Ну привет, заучка...

Зайцева Мария
Любовные романы:
эро литература
короткие любовные романы
8.30
рейтинг книги
Ну привет, заучка...

Локки 2. Потомок бога

Решетов Евгений Валерьевич
2. Локки
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Локки 2. Потомок бога

Курс 1. Ноябрь

Фокс Гарри
3. Маркатис
Фантастика:
аниме
фэнтези
сказочная фантастика
5.00
рейтинг книги
Курс 1. Ноябрь

Технарь

Муравьёв Константин Николаевич
1. Технарь
Фантастика:
космическая фантастика
попаданцы
7.13
рейтинг книги
Технарь

Кодекс Охотника. Книга XXXV

Винокуров Юрий
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXV

Сфирот

Прокофьев Роман Юрьевич
8. Стеллар
Фантастика:
боевая фантастика
рпг
6.92
рейтинг книги
Сфирот

Путь домой

Поселягин Владимир Геннадьевич
3. Четвертое измерение
Фантастика:
попаданцы
альтернативная история
6.44
рейтинг книги
Путь домой

Оживший камень

Кас Маркус
1. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Оживший камень

Родословная. Том 4

Ткачев Андрей Юрьевич
4. Линия крови
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Родословная. Том 4