- •Кафедра учета, анализа и аудита
- •«Информатика в экономике»
- •Часть 2. Электронные таблицы
- •Введение
- •Тема 1. Использование электронных таблиц как средства организации базы данных
- •Тема 2. Стандартные функции по обработке базы данных. Расчет налога на доходы физических лиц. Защита данных от некорректного ввода
- •Тема 3. Vba: Пользовательские функции
- •Тема 4. Пользовательский формат числа
- •Тема 6. Форматирование расчетного листа с помощью стандартных функций
- •Тема 5. Сводная таблица
- •Тема 7. Элементы управления на рабочем листе
- •Тема 8. Vba: Процедуры. Создание пользовательских форм
- •Тема 9. Процедура Workbook_Open()
- •Литература
- •Приложение
- •Оглавление
Тема 9. Процедура Workbook_Open()
Событие Workbook_Open() является стандартным событием рабочей книги. Код его обработки выполняется непосредственно при открытии файла рабочей книги, перед выводом на экран пользовательского интерфейса. Наиболее распространенными примерами применения данного события являются проверка имени пользователя и его прав на доступ к рабочей книге, создания пользовательских меню или панелей управления, активизация определенного листа в книге. Процедура по обработке данного события создается на модуле объекта Excel ЭтаКнига.
Пример 5. Разберем процедуру, автоматически выполняющуюся при открытии книги. Вводится пароль и имя пользователя. При верном пароле анализируется время, в зависимости от времени суток отображаются различные приветствия с именем пользователя. При неверном пароле выводится сообщение об этом, приложение закрывается.
Рис. 22 Форма для идентификации пользователя
Ниже представлены некоторые команды, которые могут быть использованы при решении задачи (табл. 10).
Таблица 10. Команды VBA
Команда |
Действие |
Application.Quit |
Закрыть приложение (Excel) |
ThisWorkBook. Close |
Закрыть рабочую книгу |
Sheets(“Лист1”).Activate |
Активизировать Лист1 |
Application.Wait Now + TimeSerial(0, 0, k) |
Осуществить задержку работы процедуры на k секунд. |
Рис. 23. Процедура
Индивидуальное задание 11. Спроектируйте форму и запишите соответствующие процедуры для решения задач, представленных в табл. 11. Номер варианта определяется преподавателем.
Таблица 11. Создание процедуры Workbook_Open()
N |
Задача |
1 |
Ввод с клавиатуры имени пользователя. Проверить, если данное имя имеется в списке зарегистрированных пользователей (список находится на одном из листов рабочей книги), вывести приветствие, содержащее имя пользователя. |
2 |
Ввод пароля и имени. Если пароль неверный, имя – не является одним из зарегистрированных (список находится на одном из листов рабочей книги), вывести сообщение об отказе в доступе и закрыть приложение |
3 |
Ввод пароля. Если длина пароля соответствует установленной длине (например, пяти) и в нем встречается заранее известный символ (например, «я»), вывести форму с приветствием, содержащую текущий год и месяц в символьном виде (например, Июнь). |
4 |
Ввод имени пользователя и пароля. Если имя и пароль между собой совпадают, отобразить приветственное сообщение, содержащее имя и время года (например, «Привет, имя! За окном осень»), в противном случае книгу закрыть. |
5 |
Ввод имени пользователя и пароля. При неверном пароле или при верном пароле и текущем выходном дне вывести форму с отказом в доступе, текущей датой и днем недели, затем книгу закрыть. |
6 |
Ввод с клавиатуры имени пользователя и даты его рождения. Если возраст пользователя меньше 18 лет, вывести в форме сообщение «Имя, доступ отказан» и закрыть книгу. |
7 |
Ввод с клавиатуры имени пользователя и текущей даты. Если день – будний, в форме вывести «Привет,<имя>!» и активизировать Лист2. В противном случае вывести «В выходные надо отдыхать!» и закрыть книгу. |
8 |
Ввод пароля. При верном пароле отразить приветствие, содержащее день недели и месяц в символьном виде (например, Среда, Декабрь). В противном случае – отказ в доступе, и закрытие приложения. |
9 |
Ввод имени пользователя и даты рождения. В форме отразить приветствие с указанием дня недели даты рождения и название месяца. Например, «Привет имя, Вы родились в понедельник, месяц – Март». |
10 |
Ввод имени пользователя и даты рождения. В форме отразить приветствие с указанием количества лет, которое исполнится Вам в текущем году. Например, «Привет имя, Вам в этом году исполнится 18 лет» и активизировать Лист2. |
11 |
Ввод пароля и имени. Правильным пароль формируется в зависимости от даты Вашего рождения, может иметь вид «01101995» или «31122000». При верном пароле вывести приветствие «Привет, имя!». |
12 |
Ввод пароля и имени. Если пароль неверный – приложение требуется закрыть. При правильном пароле вывести сообщение, содержащее анализ количества символов в имени. Например, «Привет, имя. Ваше имя достаточно длинное» или «Привет, имя. А Ваше имя короткое ». |
13 |
Ввод имени. Если сегодня будний день, вывести приветствие в виде «Привет, имя». Если день выходной, отобразить сообщение о необходимости отдыха, затем закрыть приложение. |
14 |
Ввод пароля и имени. Правильным пароль формируется в зависимости от текущей даты, может иметь вид «01102013» или «31122015». При верном пароле вывести приветствие «Привет, имя!» и активизировать Лист2. |
15 |
Ввод пароля. Если пароль верный, вывести приветствие с названием дня недели, в противном случае отобразить сообщение об отказе в доступе, закрыть книгу. |
