- •2.1. Алфавит и словарь языка
- •2.2. Переменные
- •2.3. Константы
- •2.4. Строковые переменные
- •2.5. Массивы
- •2.6. Пользовательские типы данных
- •2.7. Операции VBA
- •2.8. Объектная модель Excel
- •2.8.1. Свойства и методы объектов
- •2.8.2. Отображение объектной модели Excel
- •2.8.2.1. Иерархия объектной модели
- •2.8.2.2. Ссылка на объекты в коде VBA
- •2.8.3. Работа с объектами
- •2.8.3.1. Задание свойств объекта
- •2.8.3.2. Использование методов объекта
- •2.8.3.3. Переменные-объекты
- •2.8.3.4. Коллекции
- •2.8.3.5. Метод Add
- •2.8.3.6. Свойство Count
- •2.8.4. Свойства и методы основных объектов Excel
- •2.8.4.1. Объект Application
- •2.8.4.2. Объект Worksheet
- •2.8.4.3. Объект Range
- •2.8.5. Просмотр объектов
- •2.8.6. Использование справочной системы
- •2.8.6.1. Использование функциональной клавиши F1
- •2.8.6.2. Использование помощника
- •2.9. Ввод и вывод данных
- •2.9.3. Метод InputBox
- •2.9.4. Объединение текстовых строк
- •2.10. Концепция событий Excel
- •2.10.1. Типы событий Excel
- •2.10.2. События объекта Workbook
- •2.10.3. События объекта Worksheet
- •2.10.4. События объекта Application
- •2.10.5. События объекта UserForm
- •2.10.6. События, не связанные с конкретными объектами
- •2.10.6.1. Метод OnKey
- •2.10.6.2. Событие OnTime
- •2.11. Формы пользователя
- •2.11.1. Свойства, методы и события экранных форм
- •2.11.1.1. Некоторые свойства форм
- •2.11.1.2. Некоторые методы форм
- •2.11.1.3. Некоторые события форм
- •2.11.2. Элементы управления
- •2.11.2.1. Элемент управления Label (Надпись)
- •2.11.2.1.1. Окно свойств формы
- •2.11.2.2. Элемент управления CommandButton (Кнопка)
- •2.11.2.3. Элемент управления TextBox (Текстовое поле)
- •2.11.2.4. Элемент управления ComboBox (комбинированный список)
- •2.11.2.5. Элемент управления ListBox (список)
- •2.11.2.6. Элемент управления CheckBox (Флажок)
- •2.11.2.7. Элемент управления ToggleButton (Выключатель)
- •2.11.2.8. Элемент управления OptionButton (Переключатель)
- •2.11.2.9. Элемент управления Image (Рисунок)
- •2.11.2.12. Элемент управления RefEdit (Поле со свёртыванием)
- •2.11.2.13. Элементы управления на рабочем листе
- •2.12. Инструкции VBA
- •2.12.1. Оператор присваивания
- •2.12.2. Инструкция Set
- •2.12.3. Циклы
- •2.12.3.1. Инструкция For… Next
- •2.12.3.2. Инструкция While…Wend
- •2.12.3.3. Инструкция Do... Loop
- •2.12.3.4. Инструкция For Each…Next
- •2.12.4. Инструкции перехода
- •2.12.4.1. Инструкция условного перехода If…Then…Else
- •2.12.4.2. Инструкция Select…Case
- •2.12.4.3. Инструкция безусловного перехода GoTo
- •2.12.4.4. Инструкции перехода к обработчику ошибок On Error
- •2.12.4.5. Инструкции прерывания выполнения блока Exit
- •2.13. Функции VBA
- •2.13.1. Встроенные функции
- •2.13.1.1. Математические функции
- •2.13.1.2. Функции преобразования данных
- •2.13.1.3. Функции даты и времени
- •2.13.1.4. Строковые функции
- •2.13.1.5. Примеры использования функций VBA
- •2.13.1.5.1. Удаление ненужных символов
- •2.13.1.5.2. Определение длины строки
- •2.13.1.5.3. Сравнение и поиск строк
- •2.13.1.5.4. Выделение части строки
- •2.13.1.5.5. Форматирование значений данных
- •2.13.2. Функции, определённые пользователем
- •2.14. Файлы VBA
- •2.14.1. Типы файлов в VBA
- •2.14.2. Открытие и закрытие файла
- •2.14.3. Ввод данных в файл последовательного доступа
- •2.14.4. Вывод данных из файла последовательного доступа
- •2.14.5. Работа с файлом произвольного доступа
- •2.15. Создание процедуры
- •2.16. Выполнение процедуры
- •2.17. Сохранение процедуры
- •2.18. Запись последовательности действий пользователя
- •2.19. Просмотр кода макроса
- •3.1. Тестирование и отладка как этап разработки приложений
- •3.1.1. Отладка
- •3.1.1.1. Режим останова
- •3.1.1.2. Использование окна Immediate
- •3.1.1.2.1. Просмотр значений в окне Immediate
- •3.1.1.3. Пошаговое выполнение программ
- •3.1.2. Исправление ошибок
- •Библиографический список
- •Оглавление
60
Если в области значений появились три точки, то нужно щелкнуть на них, чтобы открылось диалоговое окно. Если появилась указывающая вниз стрелка, то щелчок на ней раскрывает список возможных значений.
Отобразить форму на экране можно двумя способами.
1.Из окна проектирования формы UserForm щёлкнуть клавишей
F5.
2.Запустить процедуру, которая вызывает метод Show объекта UserForm. Если объект UserForm называется ПЛАН_ОТГРУЗКИ, то следующая процедура отобразит это пользовательское диалоговое окно.
Sub ПЛАН_ОТОБРАЗИТЬ() ПЛАН_ОТГРУЗКИ. Show End Sub
Эта процедура должна находиться в стандартном модуле VBA, а не в модуле формы!
Изменим свойство Font элемента управления Label: выделим элемент управления Label на форме, установим для него размер шрифта равным 14 и начертание – курсив. Кроме того, выделим форму и зададим свойству Name (имя формы) значение “ПЛАН_ОТГРУЗКИ” и свойству Caption (заголовок) – значение “План отгрузки. Клавишей F5 запустим модуль формы ПЛАН_ОТГРУЗКИ на выполнение. Тогда на экран будет выведена форма, представленная на рис. 19.
Примечания
1.Имя формы, как и имя любого объекта VBA, не может содержать символ “пробел”; вместо него рекомендуется использовать символ “подчёркивание” (_).
2.Свойство Caption может иметь любое значение, в том числе и совпадающее с именем объекта.
Рис. 19. Форма План_отгрузки
2.11.2.2. Элемент управления CommandButton (Кнопка)
Отображаемая пользовательская форма находится на экране до тех пор, пока она не будет скрыта или выгружена. Диалоговое окно UserForm автоматически выгружается из памяти при щелчке на кнопке в строке заголовка окна формы. Обычно в пользовательскую форму вставляют элемент управления CommandButton, который запускает процедуру закрытия формы. Эта процедура или выгружает пользовательскую форму с помощью оператора Unload, или скрывает пользовательскую форму с экрана с помощью метода Hide объекта UserForm. При вызове метода Hide диалоговое окно удаляется с экрана, но форма остаётся в памяти.
61
Щелчок по элементу управления вызывает событие, которое можно обработать процедурой формы. Эта процедура находится в модуле формы и имеет имя, состоящее из имени элемента управления с порядковым номером элемента в форме, и слова Click, разделённых символом “под-
чёркивание”, например, CommandButton1_Click.
При этом первый вставляемый в форму элемент данного типа имеет номер 1, второй – 2 и т.д. Имя элемента управления, определяемое параметром (Name), можно менять на смысловое в таблице свойств Propеrties, например, на Ок или Выйти. В этом случае процедура обработки события будет иметь имя соответственно Ок_Click и Выйти_Click.
Для создания процедуры обработки события, возникающего при щелчке по элементу управления формой, нужно дважды щёлкнуть по этому элементу в окне редактора форм. Тогда произойдёт переход в модуль формы, в котором отобразится “заготовка” процедуры обработки события
UserForm, например,
Private Sub CommandButton1_Click()
End Sub
или
Private Sub Ok_Click()
End Sub
если имя формы было заменено в окне Propеrties на Ok. В эту процедуру нужно вставить операторы(инструкции) обработки события, например,
Private Sub Ok_Click()
Range(“A1”).Value = ShouКвартал.КВАРТАЛЫ.Value R = ShouКвартал.КВАРТАЛЫ.Value
End Sub
Private Sub Ok_Click() Unload Me
End Sub
При щелчке по кнопке Ok в первой процедуре ячейка A1 активного листа получит значение элемента управления КВАРТАЛЫ формы ShouКвартал, а вторая процедура вызовет выгрузку активной (текущей) формы.
Ключевое слово Me возвращает (указывает) имя активного окна.
Скрыть или выгрузить форму можно также при помощи стандартной процедуры, которую можно вызвать из любой другой процедуры, в том числе из процедуры формы. Приведённая ниже процедура ПЛАН_СКРЫТЬ скрывает форму ПЛАН_ОТГРУЗКИ, а процедура ПЛАН_УДАЛИТЬ удаляет форму ПЛАН_ОТГРУЗКИ из памяти.
Sub ПЛАН_СКРЫТЬ() ПЛАН_ОТГРУЗКИ.Hide End Sub
62
Sub ПЛАН_ УДАЛИТЬ ()
Unload ПЛАН_ОТГРУЗКИ
End Sub
Вместо операторов ПЛАН_ОТГРУЗКИ.Hide и Unload ПЛАН_ОТГРУЗКИ можно использовать операторы Me.Hide и Unload Me.
2.11.2.3. Элемент управления TextBox (Текстовое поле)
Текстовое поле используется:
для приема каких-либо текстовых данных, вводимых пользователем;
для вывода пользователю текстовых данных с возможностью их редактирования;
для вывода текстовых данных с возможностью копирования и печати, но без возможности изменения.
Наиболее часто используемые свойства этого элемента управления:
Value (или Text, эти два свойства для текстового поля идентичны) – то текстовое значение, которое содержится в этом поле. Используется для занесения исходного значения и для приема значения, введенного пользователем, в строковую переменную.
AutoSize – возможность для текстового поля автоматически менять свой размер, чтобы вместить весь текст.
ControlSource – ссылка на источник текстовых данных для поля. Может ссылаться, например, на ячейку в Excel, на поле в Recordset и т.п. При изменении пользователем данных в текстовом поле автоматически изменится значение на источнике, определенном в ControlSource.
ControlTipText – текст всплывающей подсказки, которая появляется, когда пользователь наводит указатель мыши на элемент управления. Рекомендуется к заполнению для всех элементов управления (для самой формы не предусмотрена).
Enabled – если переставить в False, то текст в поле станет серым и с содержимым поля ничего сделать будет нельзя (ни ввести текст, ни выделить, ни удалить). Обычно это свойство используется (для всех элементов управления), чтобы показать пользователю, что этот элемент управления отключен до выполнения каких-либо условий.
Locked – поле будет выглядеть как обычно, пользователь сможет выделять и копировать данные из него, но не изменять их. Обычно используется для показа неизменяемых данных типа лицензионных соглашений, сгенерированных значений и т.п.
MaxLength – максимальная длина значения, которое можно ввести в поле. Иногда можно использовать свойство AutoTab – при достижении определенного количества символов управление автоматически передается другому элементу управления.
63
MultiLine – можно ли использовать в текстовом поле несколько строк или необходимо обойтись одной. Если вам нужно текстовое поле для приема одного короткого значения, подумайте, нельзя ли вместо него обойтись функцией InputBox.
PasswordChar – указать, за каким символом будут «прятаться» вводимые пользователем значения. Используется, конечно, при вводе пароля. ScrollBars – будут ли показаны горизонтальная и вертикальная полосы прокрутки (в любом сочетании). Если текст может быть большим, без них не обойтись.
WordWrap – настоятельно рекомендуется включать в тех ситуациях, когда значение MultiLine стоит в True. В этом случае будет производиться автоматический переход на новую строку при достижении границы текстового поля.
Наиболее часто используемое событие для текстового поля – это событие Change, то есть изменение содержания поля. Обычно оно используется для проверки вводимых пользователем значений или синхронизация введенного значения с другими элементами управления, например, сделать доступной кнопку, изменить текст надписи и т.п.
На рис.20 представлена форма ПЛАН_ОТГРУЗКИ, в которой отображён элемент управления TextBox с установленным свойством MultiLine в True.
Рис. 20. Использование элемента управления TextBox
Форма ПЛАН_ОТГРУЗКИ загружается при выполнении процедуры “Надпись”:
Public Sub Надпись()
ПЛАН_ОТГРУЗКИ.Show End Sub
При внесении изменений в поле элемента управления, например, при вводе текста “Текстовое поле, введённое при помощи элемента управления TextBox”, выполняется процедура формы ПЛАН_ОТГРУЗКИ
TextBox1_Change:
Private Sub TextBox1_Change()
Range(“A2”).Value = ПЛАН_ОТГРУЗКИ.TextBox1.Value
End Sub