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

на главную

Жанры

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

Max – максимальное значение полосы прокрутки (только целые неотрицательные числа);

SmallChange – устанавливает шаг изменения значения при щелчке по одной из стрелок полосы прокрутки;

Enabled – допустимые значения: True (пользователь может изменить значение полосы) и False (в противном случае);

Visible – допустимые значения: True (полоса прокрутки отображается во время выполнения программы) и False (в противном случае).

Создание VBA-программы

При разработке формы будет необходимо выполнять программирование примечаний ячеек листа. Данная процедура выполняется с помощью метода AddComment объекта Range. Этот метод имеет следующий синтаксис:

AddComment (Text),

где Text – текст

комментария.

Пример 57. [7] Для заполнения базы данных на рабочем листе excel с помощью редактора пользовательских форм создать диалоговое окно Регистрация клиентов (рис. 111).

7

Гарнаев А. Самоучитель vba. СПб.: БХВ-Петербург, 2004.

С помощью этого диалогового окна вводятся данные в базу (таблицу базы), расположенную на рабочем листе Excel (рис. 112). Нажатие кнопки ОК должно приводить к добавлению новой записи в таблицу.

Рис. 111. Вид рабочей формы примера 57

Рис. 112. База данных о туристах на рабочем листе

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

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

UserForm_Initialize

1. Активизирует диалоговое окно.

2. Назначает клавише <Esc> функцию кнопки Отмена, а клавише <Enter> – Вычислить.

3. Назначает кнопкам Вычислить, Отмена и переключателям всплывающие подсказки.

4. Закрепляет первую строку так, чтобы она всегда отображалась на экране.

5. Создает заголовки полей базы данных, если они еще не были созданы.

6. Устанавливает начальное значение переключателя «0 программе».

7. Заполняет раскрывающийся список.

8. Устанавливает текст заголовка окна приложения.

CommandButton1_Click

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

2. Считывает данные из диалогового окна.

3. Вводит их в первую пустую строку.

CommandButton2_Click

1. Закрывает диалоговое окно.

2. Устанавливает заголовок приложения, используемый по умолчанию, т. е. удаляет пользовательский заголовок приложения, созданный при активизации формы.

SpinButton1_ Change

Вводит значение в поле Продолжительность тура.

Private Sub CommandButton1_Click

' Процедура считывания информации из диалогового окна

' и записи ее в базу данных на рабочем листе

' Смысл переменных однозначно определен их названиями

Dim Фамилия As String * 20

Dim Имя As String * 20

Dim Пол As String * 3

Dim ВыбранныйТур As String * 20

Dim Оплачено As String * 3

Dim Фото As String * 3

Dim Паспорт As String * 3

Dim Срок As String * 3

Dim НомерСтроки As Integer

'НомерСтроки – номер первой пустой строки рабочего листа НомерСтроки = Application.CountA(ActiveSheet.Columns(1)) + 1

'Считывание информации из диалогового окна в переменные With UserForm1

Фамилия =.TextBox1.Text

Имя =.TextBox2.Text

Срок =.TextBox3.Text

Пол = IIf(.OptionButton1.Value, «Муж», «Жен»)

Оплачено = IIf(.CheckBox1.Value, «Да», «Нет»)

Фото = IIf(.CheckBox2.Value, «Да», «Нет»)

Паспорт = IIf(.CheckBox3.Value, «Да», «Нет»)

ВыбранныйТур =.ComboBox1.List(.ComboBox1.ListIndex, 0)

End With

'Ввод данных в строку с номером НомерСтроки рабочего листа

With ActiveSheet

Cells(НомерСтроки, 1).Value = Фамилия

Cells(НомерСтроки, 2).Value = Имя

Cells(НомерСтроки, 3).Value = Пол

Cells(НомерСтроки, 4).Value = ВыбранныйТур

Cells(НомерСтроки, 5).Value = Оплачено

Cells(НомерСтроки, 6).Value = Фото

Cells(НомерСтроки, 7).Value = Паспорт

Cells(НомерСтроки, 8).Value = Срок

End With

End Sub

В приведенной процедуре для определения первой пустой строки в заполняемой базе данных о туристах используется инструкция

НомерСтроки = Application.CountA(ActiveSheet.Columns(1)) + 1,

правая часть которой вычисляет число непустых ячеек в первом столбце активного рабочего листа. Переменной НомерСтроки присваивается

значение на единицу большее, чем число непустых строк, что естественно, так как ей должен быть присвоен номер первой непустой строки базы данных. Подобные инструкции довольно часто используются при разработке приложений, поэтому следует обратить на них внимание.

Private Sub SpinButton1_Change

'Процедура ввода значения счетчика в поле ввода

With UserForm1

TextBox3.Text = CStr(.SpinButton1.Value)

End With

End Sub

Private Sub TextBox3_Change

'Процедура установки значения счетчика из поля ввода

With UserForm1

SpinButton1.Value = CInt(.TextBox3.Text)

End With

End Sub

Private Sub CommandButton2_Click

'Процедура закрытия диалогового окна

UserForm1.Hide

Application.Caption = Empty

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

End Sub

Private Sub UserForm_Initialize

'Процедура вызова диалогового окна

'и задание элементов раскрывающегося списка

'Задание пользовательского заголовка окна приложения

Application.Caption = «Регистрация. База данных туристов фирмы 'Балашов-Тур'»

Application.DisplayFormulaBar = False 'Закрытие строки формул окна Excel

With CommandButton1

Default = True

ControlTipText = «Ввод данных в базу данных»

End With

With CommandButton2

Cancel = True

ControlTipText = «Кнопка отмены»

End With

OptionButton1.Value = True

With ComboBox1

'Задание элементов раскрывающегося списка

List = Array(«Лондон», «Париж», «Берлин»)

ListIndex = 0

End With

'Задание начального и минимального значений счетчика и вывод текста

SpinButton1.Value = 1

SpinButton1.Min = 1

ЗаголовокРабочегоЛиста

UserForm1.Show

'Активизация диалогового окна

End Sub

Sub ЗаголовокРабочегоЛиста

'Процедура создания заголовков полей базы данных

If Range(«A1»).Value = «Фамилия» Then Range(«A2»).Select Exit Sub 'Если заголовки существуют, то досрочный выход из процедуры

End If 'Если заголовки не существуют, то создаются заголовки полей

ActiveSheet.Сеlls.Clear

Range(«A1:H1»).Value = Array(«Фамилия», «Имя», «Пол», «Выбранный Тур», «Оплачено», «Фото», «Паспорт», «Срок»)

Range(«А: А»).ColumnWidth = 12

Range(«D: D»).ColumnWidth = 14.4

Range(«2:2»).Select

'Закрепляется первая строка с тем, чтобы она всегда отображалась на экране

ActiveWindow.FreezePanes = True

Range(«A2»).Select

'К каждому заголовку поля базы данных присоединяется примечание

Range(«Al»).AddComment

Range(«A1»).Comment.Visible = False

Range(«A1»).Comment.Text Text:="Фамилия клиента"

Range(«B1»).AddComment

Range(«B1»).Comment.Visible = False

Range(«B1»).Comment.Text Техt:="Имя клиента"

Range(«C1»).AddComment

Range(«C1»).Comment.Visible = False

Range(«C1»).Comment.Text Text:="Пол клиента"

Range(«D1»).AddComment

Range(«D1»).Comment.Visible = False

Range(«D1»).Comment.Text Text:="Направление" & Chr(lO) & «выбранного тура»

Range(«E1»).AddComment

Range(«E1»).Comment.Visible = False

Range(«E1»).Comment.Text Text:="Путевка оплачена?" & Chr(lO) & «(Да/Нет)»

Range(«F1»).AddComment

Range(«F1»).Comment.Visible = False

Range(«F1»).Comment.Text Text:="Фото сданы" & Chr(lO) & «(Да/Нет)»

Range(«G1»).AddComment

Range(«G1»).Comment.Visible = False

Range(«G1»).Comment.Text Text:="Наличие паспорта" & Chr(lO) & "(Да/Нет)»

Range(«H1»).AddComment

Range(«H1»).Comment.Visible = False

Range(«H1»).Comment.Text Text:="Продолжительность" & Chr(lO) & «поездки»

End Sub

При написании процедура ЗаголовокРабочегоЛиста лучше всего воспользоваться MacroRecorder, который переведет производимые действия по созданию примечаний пользователем вручную на язык VBA.

Задача на закрепление материала

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

9.2. Конструирование пользовательского интерфейса

Создание VBA-программы

Microsoft Excel содержит встроенные средства по созданию и управлению базами данных. Это:

создание таблицы базы данных (осуществляется при заполнении заголовков полей таблицы);

заполнение таблицы базы данных (меню <Данные> <Форма>);

сортировка записей таблицы (меню <Данные> <Сортировка>);

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

Черный Маг Императора 13

Герда Александр
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Маяк надежды

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

Великий перелом

Ланцов Михаил Алексеевич
2. Фрунзе
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Великий перелом

Сопротивляйся мне

Вечная Ольга
3. Порочная власть
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Сопротивляйся мне

Инквизитор Тьмы 2

Шмаков Алексей Семенович
2. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 2

Мастер Разума V

Кронос Александр
5. Мастер Разума
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Мастер Разума V

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Гардемарин Ее Величества. Инкарнация

Уленгов Юрий
1. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Гардемарин Ее Величества. Инкарнация

Падение Твердыни

Распопов Дмитрий Викторович
6. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Падение Твердыни

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Ох уж этот Мин Джин Хо 2

Кронос Александр
2. Мин Джин Хо
Фантастика:
попаданцы
5.00
рейтинг книги
Ох уж этот Мин Джин Хо 2

Энфис 6

Кронос Александр
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 6