Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral


Основные понятия языка VBA

Объекты

Visual Basic for Application (VBA) – подмножество языка программирования Visual Basic, включает средства создания приложений VB. VBA относится к языкам объектно-ориентированного программирования. Системы объектно-ориентированного программирования дают возможность визуализировать процесс создания графического интерфейса разрабатываемого приложения. Главная особенность программирования в среде VBA - в ней нельзя создавать проект независимо от этих приложений, таким образом VBA работает непосредственно с объектами MS Office. Это позволяет его применять для автоматизации деятельности, связанной с обработкой различных типов документов. Программист (пользователь) может создать видимую часть приложения, которая является основой интерфейса «программа-пользователь». Взаимодействие программируемых объектов между собой и их изменение создается при помощи программных кодов.

Эта технология сделала возможным создание повторно используемых компонентов, являющихся строительными блоками программ.

При беглом знакомстве с технологией визуального программирования может создаться впечатление, что она сводится к записи макросов, помещению в формы элементов управления и определении их связей с макросами. Довольно часто при решении простейших задач так и происходит. Но если требуется создать сколько-нибудь продвинутое приложение с содержательной обработкой данных, то на первый план выступает сам язык VBA. Такое заключение можно сделать даже на примере, рассмотренном в предыдущей главе. Если бы требовалось сделать макрос Расходы универсальным, не зависящим от имени рабочего листа, то необходимо было бы внести изменения в коды программы, а для этого надо понимать их структуру.

НЕ нашли? Не то? Что вы ищете?

Объект - основной элемент VBA Excel. В VBA объектами являются рабочая книга, рабочий лист и его составляющие: ячейки, диалоговые окна, кнопки и т. д.

Примеры объектов:

    Sheet - лист Excel; Cell - ячейка; Range - диапазон ячеек; Application - приложение; UserForm - пользовательская форма.

Доступ к объекту возможен через его методы и свойства и события.

Объекты OLE и ActiveX

В VBA используется механизм OLE (Object Linking and Embedding — связывание и внедрение объектов), который позволяет взаимодействовать с любыми программами, поддерживающими OLE. Примером элементов, которые можно интегрировать при помощи механизма OLE, являются вставляемые объекты OLEObject, создаваемые, например, при помощи программ WordArt, ClipArt и т. д. Все OLE-объекты рабочего листа образуют семейство oLEObjects. Вручную в рабочий лист OLE-объекты вставляются командой Вставка, Объект (Insert, Object) с выбором в появившемся диалоговом окне Вставка объекта (Object) из списка на вкладке Создание (Create New) внедряемого объекта. OLE-объект отличается от обычного тем, что при выборе внедренного объекта (перемещении на него указателя и щелчке кнопкой мыши) активизируется программа, связанная с этим объектом, и меню приложения заменяется меню программы, его создавшей. Теперь можно, не выходя из основного приложения, работать с данным объектом, редактируя и видоизменяя его средствами создавшей его программы. Кроме того, OLE-технологля обладает так называемым свойством Automation, с помощью которого можно устанавливать свойства, применять методы и обрабатывать события внедренных объектов, как обычных объектов приложения.

С 1996 года фирма Microsoft ввела новую терминологию и теперь то, что раньше именовалось OLE-объект, называется объектом ActiveX, a OLE Automation называется ActiveX Automation.


Классы

Важнейшим понятием ООП является класс. Класс обычно описывается, как проект, на основе которого впоследствии будет создан конкретный объект. Таким образом, класс определяет имя объекта, его свойства и действия, выполняемые над объектом. В свою очередь каждый объект, в соответствии с описанным выше, является экземпляром класса.


Иерархия объектов

Объектная библиотека VBA располагает более 100 различных объектов, находящихся на различных уровнях иерархии. Иерархия определяет связь между объектами и показывает пути доступа к ним.

Полная ссылка на объект состоит из ряда имен вложенных последовательно друг в друга объектов. Разделителями имен объектов в этом ряду являются точки, ряд начинается с объекта Application и заканчивается именем самого объекта. Например, полная ссылка на ячейку AI рабочего листа лист1 рабочей книги с именем Архив имеет вид:

Application. Workbooks("Архив")

.Worksheets("Лист1").Range("Al")

Приводить каждый раз полную ссылку на объект совершенно не обязательно. Обычно достаточно ограничиться только неявной ссылкой на объект.

В неявной ссылке, в отличие от полной, объекты, которые активны в данный момент, как правило, можно опускать. В рассмотренном случае, если ссылка на ячейку AI дана в программе, выполняемой в среде Excel, то ссылка на объект Application может быть опущена, т. е. достаточно привести относительную ссылку:

Workbooks("Архив").Worksheets("Лист1").Range("A1")

Если рабочая книга Архив является активной, то ссылку можно записать еще короче:

Worksheets("Лист1").Range("A1")

Если и рабочий лист лист! активен, то в относительной ссылке вполне достаточно ограничиться упоминанием только диапазона A1:

Range("A1")

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

В языке VBA для каждого объекта определен набор стандартных событий.

Стандартное событие для объекта <кнопка> (CommandButton) - щелчок мышью (Click).

Если пользователь нажимает на кнопку, то это событие. На это событие должен быть отклик, то есть выполнение какой-либо программы. Такая программа называется процедурой обработки событий и имеет стандартное имя. Если такой отклик не создан (не написана соответствующая программа), то система никак не будет реагировать на это событие.

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

Методами называются набор действий, которые может совершать объект. Например, ячейку можно очистить (Clear), приложение закрыть (Quit), пользовательскую форму показать (Show) или скрыть (Hide).

Название метода отделяется от названия объекта точкой: Объект. Метод

Примеры использования методов:

    Range("B2:E2").Select - выбрать диапазон ячеек B2:E2; Range("C1:C5").Clear - очистить диапазон ячеек C1:C5; UserForm2.Hide - скрыть форму № 2; UserForm5.Show - показать форму № 5; Application. Quit - выйти из приложения.

Свойства объекта – это возможность получения доступа к информации, которая хранится в этом объекте. Через свойства можно получить эту информацию или ее изменить. Например, размер и цвет шрифта, положение формы на экране или состояние объекта (доступность, видимость). Чтобы изменить характеристику объекта, надо просто изменить значение свойства, т. е. присвоить ему определенные значения.

Синтаксис установки значения свойства:

Объект. Свойство = ЗначениеСвойства,

- где Объект обозначает имя объекта, Свойство - имя свойства, которому присваивается значение.

Имя объекта отделяется от имени свойства точкой.

Примеры свойств:

Range("D1").Value = 2005 - поместить в ячейку D1 значение 2005.

Range("C1:C10").Text = "Информатика" - поместить в диапазон ячеек C1:C10 текст Информатика.

Range("B2").Font. Size = 14 - в ячейке B2 установить размер шрифта 14.

Объект, Семейство: TextBox (Поле ввода).

Объект, Семейство: UserForm (пользовательская форма).

Объект: Range (диапазон).

Объект: Sheet (лист), ActiveSheet (активный/выбранный лист).

Объект: Application (приложение).

Семейство (объект collection) представляет собой объект, содержащий несколько других объектов, как правило, одного и того же типа. Например, объект workbooks (рабочие книги) содержит все открытые объекты Workbook (рабочая книга). Каждый элемент семейства нумеруется и может быть идентифицирован либо по номеру, либо по имени. Например, worksheets (1) обозначает первый рабочий лист активной книги, a worksheets ("Лист1") — рабочий лист с именем лист1.

Методы и свойства некоторых объектов VBA

Свойства объекта определяют его внешний вид и поведение, а методы объекта – те функции, которые может выполнять объект.

    Метод - Quit (закрыть). Свойство - Caption (имя главного окна).

Примеры:

Application. Quit - закрыть приложение;

Application. Caption = "Протокол" - установить в качестве заголовка окна приложения “Протокол”.


    Семейство - Sheets (листы). Методы - Select(выбрать); ShowDataForm (показать встроенную форму).

Примеры:

Sheets("Меню").Select - выбрать лист “Меню”;

ActiveSheet. ShowDataForm-на активном в настоящий момент листе показать встроенную форму.


    Методы - Select(выделить);Clear(очистить). Свойство - Name(имя).

Примеры:

Sheets("Протокол").Range("В4:В10").Name = "Класс"-диапазону В4:В10, расположенному на листе “Протокол”, присвоить имя “Класс”;

Sheets("Протокол").Range("В4:В10").Select-выделить диапазон В4:В10 на листе “Протокол”.


    Методы - Show(показать); Hide(скрыть). Свойство - Caption(текст, отображаемый в строке заголовка).

Примеры:

UserForm1.Show - показать пользовательскую форму номер один;

UserForm1.Hide - скрыть пользовательскую форму номер один;

UserForm1.Caption - "Информатика"- вывести заданный в кавычках текст в строке заголовка.


    Свойство:Text(содержимое).

Примеры:

UserForm1.TextBox1.Text = Date - в поле ввода номер один в пользовательской форме номер один записать текущую дату;

UserForm1.TextBox2.Text = " "- очиститьполе ввода номер два в пользовательской форме номер один.


    Метод: AddItem(добавить элемент в список). Свойства: Text(содержимое); Rowsource (источник строк для списка).

Примеры:

UserForm1.ComboBox2.Text = " "-очистить значение поля для поля ввода со списком номер два в пользовательской форме номер один;

UserForm2.ComboBox1.Rowsource="В2:В10"-источником строк для поля один со списком в пользовательской форме два установить данные из диапазона В2:В10;

UserForm1.ComboBox1.AddItem ("Факс")-добавить к списку элемент, заключенный в кавычки.

Объект, Семейство: OptionButton (переключатель)


    Свойства:Value(значение);Сaption(надпись).

Примеры:

UserForm3.OptionButton1.Value = True-выбрать переключатель номер один в пользовательской форме номер три;

UserForm3.OptionButton1.Capture = "Успеваемость"-установить надпись “Успеваемость” рядом с переключателем в пользовательской форме номер три.

Объект, Семейство: CheckBox (флажок)


    Свойства:Value(значение); Сaption(надпись).

Примеры:

UserForm2.CheckBox1.Value = True-установить флажок номер один в пользовательской форме номер два;

UserForm3.CheckBox1.Value = False - сбросить флажок номер один в пользовательской форме номер три;

UserForm4.CheckBox1.Capture="Класс"-установить надпись “Класс” рядом с флажком в пользовательской форме номер четыре.

Описание данных начинается с оператора DIM

Переменные

Элементы языка VBA

Объекты - основные элементы языка VBA, но не единственные.

К другим элементам относятся: константы, переменные, массивы, выражения, встроенные функции, встроенные диалоговые окна, операторы.

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

Имя переменной должно начинаться с буквы и может содержать буквы, цифры и другие символы. Имя не может содержать пробелы, точки, запятые, восклицательный знак и символы “@”, “&”, “$”, “#”. Имя не должно содержать более 255 символов. Не следует использовать имена, совпадающие с ключевыми словами VBA и именами встроенных функций и процедур.

Тип переменных в операторе Dim можно не указывать. Тогда VBA применит тип данных по умолчанию (Variant). Кажется, что это удобно, но все же лучше тип данных определять. По нескольким причинам. Во-первых — в целях экономии ресурсов памяти. Ни один тип не требует 16 или 22 байтов для сохранения значений переменных. Во-вторых, VBA по-разному обрабатывает данные разных типов. Поэтому, не объявляя тип данных, вы можете получить результат, отличающийся от желаемого. И, наконец, от типов данных в VBA зависит время выполнения процедур.

Пример определения переменных:

Dim A As Integer, B As Byte, С As String

Переменная А определена как целое число (не больше 32 767 и не меньше –32 768); переменная В определена как целое неотрицательное число (не больше 255), а в переменной С может храниться текстовая информация.

Переменные используются для хранения данных, которые могут изменяться в процессе выполнения процедуры. Если надо хранить постоянную информацию, не изменяющуюся при выполнении процедуры, то применяются константы. Числовые константы - это целые либо вещественные числа.

Символьные константы - текст, заключенный в кавычки.

Пример числовой константы - 5,8 (использование запятой или точки зависит от настроек операционной системы). Пример символьной константы - ООО “Темп”.

Для объявления констант и их значений используется оператор Const, имеющий следующий синтаксис:

Const Имя_константы As тип_данных = значение

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

Пример объявления константы:

Const Годы_учебы As Byte = 11

Программа на VBA - это последовательность операторов/

Для того чтобы сделать программу легко читаемой, используют оператор комментариев. В языке VBA существуют два способа ввода комментариев: применение апострофа ('), который можно поставить в любом месте строки, и зарезервированное слово Rem вместо апострофа. При этом комментируется текст до конца строки.

Основные типы переменных, их размеры и диапазоны принимаемых значений приведены в табл. 1.

Переменные типа Variant могут хранить все, что в них поместят. Их тип изменяется в зависимости от последнего присвоения.

Массив - упорядоченная совокупность однотипных переменных. Массивы имеют имя и размерность. Имя массива подбирается с учетом тех же правил, что и имена переменных. Размерность - это количество элементов (переменных), составляющих массив.

Из констант, переменных и встроенных функций (они рассмотрены далее) с помощью скобок и знаков арифметических операций (“+”, “-”, “*”, “/”, “^”) можно составлять выражения. Частным случаем выражения может быть просто одиночный элемент, т. е. константа, переменная или обращение к встроенной функции.

Примеры выражений:

    Z (a+b)^2 45 sin(y)

В VBA имеется большой набор встроенных функций, которые разделяют на категории. Примеры категорий:

    математические функции; функции преобразования форматов; логические функции; функции времени и даты. функции проверки типов;

Некоторые из функций приведены в табл. 2:

Кроме перечисленных функций, объект Applications позволяет вызвать более 400 встроенных функций рабочего листа при помощи конструкции вида:

Application. Функция Рабочего Листа(Аргументы).

Примеры:

    m(Sheets("Проверка").Range("A1:B20")) - суммируются значения из ячеек диапазона A1:B20, расположенного на листе “Проверка”;
    Application. CountA(Sheets("Ученики").Range("A:A")) - подсчитывается количество непустых ячеек в столбце А на листе “Ученики”.

Окно проекта

Панели инструментов

Структура редактора VBA

Редактор VBA активизируется командой Разработчика Редактор Visual Basic. После выполнения команд мы попадаем в редактор VBA. Возвратиться из редактора VBA в рабочую книгу можно нажатием кнопки Вид(View) а Microsoft Excel .Рассмотрим основные компоненты окна редактора. Внешний вид окна редактора представлен на рисунке. Окно редактора состоит из следующих компонентов:

    меню; панели инструментов; окно проекта; окно свойств; окно редактирования кода;

Стандартная панель инструментов редактора Visual Basic содержит кнопки, предназначенные для выполнения наиболее часто используемых команд.

Панель разбита на отдельные сегменты по типу выполняемых команд.

Кнопки первого сегмента:

Кнопки для возврата в Excel, вставки элементов (модулей, процедур, экранных форм) в проект и сохранение рабочей книги.

Кнопки второго сегмента:

Кнопки для вырезания, копирования, вставки и поиска фрагментов кода.

Кнопки третьего сегмента:

Кнопки отмены действий и повторения отмененных действий.

Кнопки четвертого сегмента:

Кнопки для выполнения, остановки и прекращения выполнения процедуры, а также смены режима отображения экранной формы.

Кнопки пятого сегмента:

Кнопки, управляющие отображением окон проектов, свойств и просмотра объектов, а также панели инструментов.

Последняя кнопка - это обычная кнопка вызова справочной системы.

Окно проекта активизируется выбором команды Вид ® Окно проекта(View, Project window) или нажатием кнопки Окно проекта .В окне проекта представлена иерархическая структура файлов, форм и модулей текущего проекта.

В окне свойств перечисляются основные значения свойств выбранного объекта. Используя это окно, можно просматривать свойства и изменить их значения. Для просмотра свойств выбранного объекта надо выполнить команду Вид а Окно свойств (Properties Windows) или нажатием кнопки .

Окно свойств состоит из двух составных частей: верхней и рабочей. В верхней части окна располагается раскрывающийся список, из которого можно выбрать любой элемент управления текущей формы или саму форму. Рабочая часть состоит из двух вкладок, в которых свойства располагаются По алфавиту (Alphabetic) и По категориям (Categorized).

Окно для просмотра объектов (Object Browser)

Окно Просмотр объектов (Object Browser) вызывается командой Вид / Просмотр объектов (View, Object Browser) или нажатием кнопки . В этом окне можно просматривать все объекты проекта. Здесь вы найдете все свойства, методы и события, связанные с любым объектом.

Окно Просмотр объектов состоит из трех основных частей:

1. Раскрывающегося списка Проект/Библиотека в верхнем левом углу экрана. Например, библиотеки объектов Excel, VBA, Office и VBAProject (объекты пользовательского проекта).

2. Списка Классы. Выводятся все классы выбранной библиотеки.

3. Списка Компоненты (Members). Выводятся все компоненты выбранного класса.

Это окно предоставляет доступ ко всем объектам, свойствам, методам и событиям.

Интеллектуальные возможности редактора кода

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

Range("A1").

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

Автоматическое отображение списка компонентов происходит только при установленном флажке Список компонентов (Auto List Members) вкладки Редактор (Editor) диалогового окна Параметры (Options), отображаемого на экране после выбора команды Сервис, Параметры (Tools, Options).

Список компонентов можно выводить на экран нажатием комбинации клавиш <Ctrl>+<J>, при этом список отображается как при установленном, так и при снятом флажке Список компонентов (Auto List Members) вкладки Редактор (Editor) диалогового окна Параметры (Options).

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

Автоматическое отображение на экране сведений о процедурах, функциях, свойствах и методах после ввода их имени происходит только при установленном флажке Краткие сведения (Auto Quick Info) вкладки Редактор (Editor) диалогового окна Параметры (Options), отображаемого на экране после выбора команды Сервис, Параметры (Tools, Options).

Описанную выше всплывающую подсказку можно также выводить на экран нажатием комбинации клавиш <Ctrl>+<!>. При этом всплывающая подсказка отображается как при установленном, так и при снятом флажке Краткие сведения вкладки Редактор диалогового окна Параметры (Options).

Редактор кода также производит автоматическую проверку синтаксиса набранной строки кода сразу после нажатия клавиши <Enter>. Если после набора строки и нажатия клавиши <Enter> строка выделяется красным цветом, то это как раз и указывает на наличие синтаксической ошибки в набранной строке. Эту ошибку необходимо найти и исправить. Кроме того, если установлен флажок Проверка_синтаксиса (Auto Syntax Check) вкладки Редактор (Editor) диалогового окна Параметры (Options), отображаемого на экране посредством выбора команды Сервис, Параметры (Tools, Options), помимо выделения красным цветом фрагмента кода с синтаксической ошибкой, на экране отображается диалоговое окно, поясняющее, какая возможная ошибка произошла.

Редактор кода обладает еще одной мощной интеллектуальной возможностью, увеличивающей эффективность работы пользователя. Если курсор расположить на ключевом слове языка VBA, имени процедуры, функции, свойства или метода и нажать клавишу <F1>, то на экране появится окно со справочной информацией об этой функции. Обычно в справке имеется пример использования кода, что позволяет быстрее разобраться в ситуации, которая при написании программы озадачила вас.


Окно редактирования форм (UserForm)

Для создания диалоговых окон, разрабатываемых приложений в VBA, используются формы. Редактор форм является одним из основных инструментов визуального программирования. Форма в проект добавляется с помощью команды Вставка, Форма (Insert, Form) или нажатием кнопки Вставить UserForm (Insert UserForm). В результате на экран выводится незаполненная форма с панелью инструментов Панель элементов (Toolbox).

Используя панель инструментов Панель элементов из незаполненной формы, можно сконструировать любое требуемое для приложения диалоговое окно. Размещение нового управляющего элемента в форме осуществляется следующей последовательностью действий:

Щелкните значок того элемента, который вы собираетесь разместить в форме. Поместите указатель мыши на то место, где будет располагаться управляющий элемент. Нажмите левую кнопку мыши и, не отпуская ее, растяните появившийся прямоугольник до требуемых размеров. Отпустите кнопку мыши. Элемент управления на нужном место создан.

Размеры формы и расположенных на ней элементов управления можно изменять. Технология изменения размеров стандартная для Windows: выделить изменяемый элемент, разместить указатель мыши на одном из размерных маркеров и протащить его при нажатой левой кнопки мыши так, чтобы объект принял требуемые размеры. Окно редактирования форм поддерживает операции буфера обмена.

Таким образом, можно копировать, вырезать и вставлять элементы управления, расположенные на поверхности формы. Для облегчения размещения и выравнивания элементов управления используется сетка. Активизировать ее можно с помощью вкладки Общие (General) диалогового окна Параметры (Options), вызываемого командой Сервис, Параметры (Tools, Options), там же устанавливается шаг сетки. Кроме того, команды меню Формат (Format) автоматизируют и облегчают процесс выравнивания элементов управления как по их взаимному местоположению, так и по размерам.