- •Скрытые перемещения
- •Относительные перемещения
- •Перемещаемся по листам не зная их имён
- •Крайние перемещения
- •Выделения относительно активной ячейки
- •Относительные формулы
- •Столбцы и строки
- •Error. Обработка ошибок
- •Скачать пример
- •Способ №1. Перенаправление программы
- •Способ №2. Настойчивость в исправлении ошибки
- •Способ №3. Предупреждён. Сообщение об ошибке
- •Способ №4. Очистка ошибки
- •Способ №5. Идём напролом
- •Создание собственной функции
- •Цифры прописью
- •Заставка приветствия реализованная на UserForm
- •Выпадающий список ComboBox на UserForm
- •Работа с ComboBox
- •Как поставить значение по умолчанию в ComboBox?
- •Запрет ввода данных в ComboBox
- •Ускоряем работу макроса в Excel
- •Глобальное ускорение
Заставка приветствия реализованная на UserForm
Видеоурок
по данной теме
И вот мы сделали программу, которой все пользуются. Но хотелось бы отличиться и приблизить программу к настоящей, полноценной. Многие замечали, что при открытии большинства программ, нам появляется заставка приветствия (например у Total Commander, AIMP и т.д.). Давайте сделаем подобие, пусть при открытии книги нам на 2 секунды появляется такая вот картинка.
Для этого создадим новый документ, в котором создадим новую форму с именем Zstvk.
Теперь фоном этой формы сделаем нашу картинку. В профиле формы выбираем пункт Picture. И загрузим выбранную картинку. Придаём форме необходимые размеры, пишем в шапке "Приветствие"(строка Caption в профиле).
Чтобы форма появлялась при открытии книги необходимо добавить в книгу макрос, который срабатыват при открытии книги. Производим двойной щелчок мыши по вкладке "Эта книга" и добавляем туда код, который будет вызывать форму.
Private Sub Workbook_Open()
Zstvk.Show
End Sub
Для того, чтобы форма появлялась на 2 секунды воспользуемся таймером. Перейдём в код формы и выберем макрос, который срабатывает при активации формы.
Теперь добавим в этот код таймер.
Private Sub UserForm_Activate()
Application.OnTime Now + TimeValue("00:00:02"), "Vigruzit"
End Sub
Vigruzit - это имя макроса, который сработает через 2 секунды. При помощи этого макроса заставка будет автоматически закрываться. Для этого добавим в книгу новый модуль и создадим в нём вот такой макрос.
Sub Vigruzit()
Unload Zstvk
End Sub
Ну вот, всё готово. Сохраняем книгу закрываем и открываем. При этом нам появляется созданное окно приветствия.
Выпадающий список ComboBox на UserForm
Видеоурок по данной теме
Создадим в проекте форму с выподающим списком, в которой будет указан список некоторых сотрудников, которых необходимо "обработать".
Работа с ComboBox
Итак, добавим форму - пункт меню Insert/UserForm, и назовём её к примеру Vibor. Теперь из панели инструментов добавим на неё ComboBox. Придаём ему необходимые размеры и расположение на форме. Ну и кнопку добавим на форму, которая и будет обрабатывать данные выпадающего списка.
Выделим мышкой добавленный ComboBox и зададим ему имя Sotrudniki, дабы понятно было.
Добавим на лист в столбец А список произвольных не повторяющихся имён и кнопку, которая будет вызывать созданную форму. Ниже показан код кнопки находящейся, на листе.
Private Sub CommandButton1_Click()
Vibor.Show
End Sub
Ну вот, сотрудники готовы. Теперь их как-то надо загрузить в ComboBox, который находится на форме. Для этого заходим в код формы. Щёлкаем правой кнопкой мыши по ней в окне Project-VBAProject и выбираем пункт View Code.
Выбираем из выподающего списка UserForm и Initialize. Это тот код который будет инициализировать форму Vibor при её загрузке.
Теперь воспользуемся обычным циклом, который будет перебирать имена и записывать их в Combobox-Sotrudniki. Код будет выглядеть таким образом:
Private Sub UserForm_Initialize()
Dim Imena As String
Dim a As Byte
For a = 2 To 9 Step 1
Imena = Cells(a, 1)
Sotrudniki.AddItem Imena
Next a
End Sub
Imena - это строковая переменная, в которую записываются имена; a - это числовая переменная, которая равна количеству имён (от 2 до 9, так как имена начинаются со второй строки и заканчиваются девятой строкой); Sotrudniki.AddItem Imena - добавляет в выпадающий список имена из переменной Imena; Cells(a, 1) - ячейка с переменной строкой и постоянным столбцом А, из которой заносятся имена в переменную Imena;
Теперь перейдём к самому главному - нажмём на кнопку Обработать, чтобы запустить форму.
Для того чтобы орабоать выбранное имя перейдём в код кнопки ОК и разместим следующий код.
Private Sub CommandButton1_Click() 'Кнопка Ок
If Sotrudniki.Text = "" Then
MsgBox "Сотрудник не выбран", vbCritical, "Ошибка"
Else
MsgBox "Производим обработку данных сотрудника " & _
Sotrudniki.Text, vbExclamation, "Пример"
End If
End Sub
В этом коде говорится, что если сотрудник не выбран, то нам появляется первое критическое сообщение, если имя сотрудника указано, то нам выводится второе сообщение.
