VBA — Обзор
VBA означает V isual B asic для приложений A, языка программирования, управляемого событиями, от Microsoft, который в настоящее время преимущественно используется в офисных приложениях Microsoft, таких как MSExcel, MS-Word и MS-Access.
Он помогает техническим специалистам создавать специализированные приложения и решения для расширения возможностей этих приложений. Преимущество этого средства в том, что вам НЕ НУЖНО установить Visual Basic на наш ПК, однако установка Office неявно поможет в достижении этой цели.
Вы можете использовать VBA во всех офисных версиях, от MS-Office 97 до MS-Office 2013, а также с любой из последних доступных версий. Среди VBA Excel VBA является самым популярным. Преимущество использования VBA в том, что вы можете создавать очень мощные инструменты в MS Excel, используя линейное программирование.
Применение VBA
Вы можете задаться вопросом, зачем использовать VBA в Excel, поскольку MS-Excel сам по себе предоставляет множество встроенных функций. MS-Excel предоставляет только основные встроенные функции, которых может быть недостаточно для выполнения сложных вычислений. При таких обстоятельствах VBA становится наиболее очевидным решением.
Например, очень сложно рассчитать ежемесячное погашение кредита, используя встроенные формулы Excel. Скорее, легко запрограммировать VBA для такого расчета.
Доступ к редактору VBA
В окне Excel нажмите «ALT + F11». Откроется окно VBA, как показано на следующем снимке экрана.
VBA — Макросы Excel
В этой главе вы узнаете, как написать простой макрос шаг за шагом.
Шаг 1. Сначала включите меню «Разработчик» в Excel 20XX. Чтобы сделать то же самое, нажмите Файл → Параметры.
Шаг 2 — Нажмите «Настроить ленту» и выберите «Разработчик». Нажмите «ОК».
Шаг 3 — Лента «Разработчик» появляется в строке меню.
Шаг 4 — Нажмите кнопку «Visual Basic», чтобы открыть редактор VBA.
Шаг 5 — Запустите сценарий, добавив кнопку. Нажмите Вставить → Выберите кнопку.
Шаг 6 — Выполните щелчок правой кнопкой мыши и выберите «Свойства».
Шаг 7 — Измените имя и подпись, как показано на следующем снимке экрана.
Шаг 8 — Теперь дважды нажмите кнопку, и схема подпрограммы отобразится, как показано на следующем снимке экрана.
Шаг 9 — Начните кодирование, просто добавив сообщение.
Private Sub say_helloworld_Click() MsgBox "Hi" End Sub
Шаг 10 — Нажмите кнопку, чтобы выполнить подпроцедуру. Вывод подпроцедуры показан на следующем снимке экрана.
Примечание. В следующих главах мы продемонстрируем использование простой кнопки, как описано в шагах с 1 по 10. Следовательно, важно тщательно понять эту главу.
VBA — Excel Условия
В этой главе вы познакомитесь с обычно используемой терминологией Excel VBA. Эти термины будут использоваться в следующих модулях, поэтому важно понимать каждый из них.
Модули
Модули — это область, где написан код. Это новая рабочая тетрадь, поэтому никаких модулей нет.
Чтобы вставить модуль, перейдите к Вставка → Модуль. Как только модуль вставлен, «module1» будет создан.
Внутри модулей мы можем написать код VBA, а код написан в процедуре. Процедура / подпроцедура — это серия утверждений VBA, в которых указывается, что делать.
Процедура
Процедуры — это группа операторов, выполняемых как единое целое, которые инструктируют Excel, как выполнять определенную задачу. Выполняемая задача может быть очень простой или очень сложной задачей. Однако рекомендуется разбивать сложные процедуры на более мелкие.
Двумя основными типами процедур являются Sub и Function.
функция
Функция — это группа многократно используемого кода, которую можно вызывать в любом месте вашей программы. Это устраняет необходимость писать один и тот же код снова и снова. Это помогает программистам разделить большую программу на ряд небольших и управляемых функций.
Помимо встроенных функций, VBA позволяет также писать пользовательские функции, а операторы записываются между функцией и конечной функцией .
Подпроцедур
Подпроцедуры работают аналогично функциям. Хотя подпроцедуры НЕ возвращают значение, функции могут возвращать или не возвращать значение. Подпроцедуры могут быть вызваны без ключевого слова вызова. Подпроцедуры всегда заключены в инструкции Sub и End Sub .
VBA — Макро Комментарии
Комментарии используются для документирования логики программы и пользовательской информации, с которой другие программисты могут беспрепятственно работать над тем же кодом в будущем.
Он включает в себя информацию, такую как разработанную, модифицированную, и может также включать встроенную логику. Комментарии игнорируются интерпретатором при исполнении.
Комментарии в VBA обозначаются двумя способами.
-
Любое утверждение, начинающееся с одинарной кавычки (‘), рассматривается как комментарий. Ниже приведен пример.
Любое утверждение, начинающееся с одинарной кавычки (‘), рассматривается как комментарий. Ниже приведен пример.
' This Script is invoked after successful login ' Written by : TutorialsPoint ' Return Value : True / False
-
Любое утверждение, которое начинается с ключевого слова «REM». Ниже приведен пример.
Любое утверждение, которое начинается с ключевого слова «REM». Ниже приведен пример.
REM This Script is written to Validate the Entered Input REM Modified by : Tutorials point/user2
VBA — Окно сообщений
Функция MsgBox отображает окно сообщения и ждет, когда пользователь нажмет кнопку, а затем действие будет выполнено на основе кнопки, нажатой пользователем.
Синтаксис
MsgBox(prompt[,buttons][,title][,helpfile,context])
Описание параметра
-
Подсказка — Обязательный параметр. Строка, которая отображается в виде сообщения в диалоговом окне. Максимальная длина подсказки составляет около 1024 символов. Если сообщение распространяется более чем на строку, то строки могут быть разделены с помощью символа возврата каретки (Chr (13)) или символа перевода строки (Chr (10)) между каждой строкой.
-
Кнопки — необязательный параметр. Числовое выражение, определяющее тип отображаемых кнопок, стиль используемых значков, идентификатор кнопки по умолчанию и модальность окна сообщения. Если оставить пустым, значение по умолчанию для кнопок будет 0.
-
Заголовок — необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.
-
Файл справки — необязательный параметр. Строковое выражение, определяющее файл справки, который будет использоваться для предоставления контекстной справки для диалогового окна.
-
Контекст — необязательный параметр. Числовое выражение, обозначающее номер контекста справки, назначенный автором справки для соответствующего раздела справки. Если предоставляется контекст, также должен быть предоставлен файл справки.
Подсказка — Обязательный параметр. Строка, которая отображается в виде сообщения в диалоговом окне. Максимальная длина подсказки составляет около 1024 символов. Если сообщение распространяется более чем на строку, то строки могут быть разделены с помощью символа возврата каретки (Chr (13)) или символа перевода строки (Chr (10)) между каждой строкой.
Кнопки — необязательный параметр. Числовое выражение, определяющее тип отображаемых кнопок, стиль используемых значков, идентификатор кнопки по умолчанию и модальность окна сообщения. Если оставить пустым, значение по умолчанию для кнопок будет 0.
Заголовок — необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.
Файл справки — необязательный параметр. Строковое выражение, определяющее файл справки, который будет использоваться для предоставления контекстной справки для диалогового окна.
Контекст — необязательный параметр. Числовое выражение, обозначающее номер контекста справки, назначенный автором справки для соответствующего раздела справки. Если предоставляется контекст, также должен быть предоставлен файл справки.
Параметр Buttons может принимать любое из следующих значений:
-
0 vbOKOnly — отображает только кнопку ОК.
-
1 vbOKCancel — отображает кнопки OK и Отмена.
-
2 vbAbortRetryIgnore — отображает кнопки отмены, повторной попытки и игнорирования.
-
3 vbYesNoCancel — отображает кнопки «Да», «Нет» и «Отмена».
-
4 vBYesNo — отображает кнопки «Да» и «Нет».
-
5 vbRetryCancel — отображает кнопки «Повторить» и «Отмена».
-
16 vbCritical — отображает значок критического сообщения.
-
32 vbQuestion — отображает значок запроса предупреждения.
-
48 vbExclamation — отображает значок предупреждающего сообщения.
-
64 vbInformation — отображает значок информационного сообщения.
-
0 vbDefaultButton1 — первая кнопка по умолчанию.
-
256 vbDefaultButton2 — вторая кнопка по умолчанию.
-
512 vbDefaultButton3 — третья кнопка по умолчанию.
-
768 vbDefaultButton4 — четвертая кнопка по умолчанию.
-
0 vbApplicationModal Модальное приложение — текущее приложение не будет работать, пока пользователь не ответит на окно сообщения.
-
4096 vbSystemModal Системный модал — Все приложения не будут работать, пока пользователь не ответит на окно сообщения.
0 vbOKOnly — отображает только кнопку ОК.
1 vbOKCancel — отображает кнопки OK и Отмена.
2 vbAbortRetryIgnore — отображает кнопки отмены, повторной попытки и игнорирования.
3 vbYesNoCancel — отображает кнопки «Да», «Нет» и «Отмена».
4 vBYesNo — отображает кнопки «Да» и «Нет».
5 vbRetryCancel — отображает кнопки «Повторить» и «Отмена».
16 vbCritical — отображает значок критического сообщения.
32 vbQuestion — отображает значок запроса предупреждения.
48 vbExclamation — отображает значок предупреждающего сообщения.
64 vbInformation — отображает значок информационного сообщения.
0 vbDefaultButton1 — первая кнопка по умолчанию.
256 vbDefaultButton2 — вторая кнопка по умолчанию.
512 vbDefaultButton3 — третья кнопка по умолчанию.
768 vbDefaultButton4 — четвертая кнопка по умолчанию.
0 vbApplicationModal Модальное приложение — текущее приложение не будет работать, пока пользователь не ответит на окно сообщения.
4096 vbSystemModal Системный модал — Все приложения не будут работать, пока пользователь не ответит на окно сообщения.
Вышеуказанные значения логически разделены на четыре группы: первая группа (от 0 до 5) указывает кнопки, отображаемые в окне сообщения. Вторая группа (16, 32, 48, 64) описывает стиль значка, который должен отображаться, третья группа (0, 256, 512, 768) указывает, какая кнопка должна быть по умолчанию, и четвертая группа (0, 4096). ) определяет модальность окна сообщения.
Возвращаемые значения
Функция MsgBox может возвращать одно из следующих значений, которое можно использовать для определения кнопки, которую пользователь нажал в окне сообщения.
- 1 — vbOK — нажата кнопка ОК
- 2 — vbCancel — Отмена была нажата
- 3 — vbAbort — нажата кнопка «Прервать»
- 4 — vbRetry — повторная попытка была нажата
- 5 — vbIgnore — щелкнули Ignore
- 6 — vbYes — Да нажали
- 7 — vbNo — нет кликали
пример
Function MessageBox_Demo() 'Message Box with just prompt message MsgBox("Welcome") 'Message Box with title, yes no and cancel Butttons int a = MsgBox("Do you like blue color?",3,"Choose options") ' Assume that you press No Button msgbox ("The Value of a is " & a) End Function
Выход
Шаг 1. Указанную выше функцию можно выполнить, нажав кнопку «Выполнить» в окне VBA или вызвав функцию из рабочего листа Excel, как показано на следующем снимке экрана.
Шаг 2 — Отображается окно простого сообщения с сообщением «Добро пожаловать» и кнопкой «ОК»
Шаг 3 — После нажатия OK, появляется еще одно диалоговое окно с сообщением вместе с кнопками «да, нет и отмена».
Шаг 4 — После нажатия кнопки «Нет» значение этой кнопки (7) сохраняется в виде целого числа и отображается пользователю в виде окна сообщения, как показано на следующем снимке экрана. Используя это значение, можно понять, на какую кнопку нажал пользователь.
VBA — InputBox
Функция InputBox предлагает пользователям ввести значения. После ввода значений, если пользователь нажимает кнопку OK или нажимает клавишу ВВОД на клавиатуре, функция InputBox возвращает текст в текстовое поле. Если пользователь нажмет кнопку «Отмена», функция вернет пустую строку («»).
Синтаксис
InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])
Описание параметра
-
Подсказка — обязательный параметр. Строка, которая отображается в виде сообщения в диалоговом окне. Максимальная длина подсказки составляет около 1024 символов. Если сообщение распространяется более чем на строку, то строки могут быть разделены с помощью символа возврата каретки (Chr (13)) или символа перевода строки (Chr (10)) между каждой строкой.
-
Заголовок — необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.
-
По умолчанию — необязательный параметр. Текст по умолчанию в текстовом поле, который пользователь хотел бы отобразить.
-
XPos — необязательный параметр. Положение оси X представляет быстрое расстояние от левой стороны экрана по горизонтали. Если оставить это поле пустым, поле ввода будет горизонтально отцентрировано.
-
YPos — необязательный параметр. Положение оси Y представляет быстрое расстояние от левой стороны экрана по вертикали. Если оставить это поле пустым, поле ввода будет центрировано вертикально.
-
Helpfile — необязательный параметр. Строковое выражение, определяющее файл справки, который будет использоваться для предоставления контекстно-зависимой справки для диалогового окна.
-
контекст — необязательный параметр. Числовое выражение, обозначающее номер контекста справки, назначенный автором справки для соответствующего раздела справки. Если предоставляется контекст, также должен быть предоставлен файл справки.
Подсказка — обязательный параметр. Строка, которая отображается в виде сообщения в диалоговом окне. Максимальная длина подсказки составляет около 1024 символов. Если сообщение распространяется более чем на строку, то строки могут быть разделены с помощью символа возврата каретки (Chr (13)) или символа перевода строки (Chr (10)) между каждой строкой.
Заголовок — необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.
По умолчанию — необязательный параметр. Текст по умолчанию в текстовом поле, который пользователь хотел бы отобразить.
XPos — необязательный параметр. Положение оси X представляет быстрое расстояние от левой стороны экрана по горизонтали. Если оставить это поле пустым, поле ввода будет горизонтально отцентрировано.
YPos — необязательный параметр. Положение оси Y представляет быстрое расстояние от левой стороны экрана по вертикали. Если оставить это поле пустым, поле ввода будет центрировано вертикально.
Helpfile — необязательный параметр. Строковое выражение, определяющее файл справки, который будет использоваться для предоставления контекстно-зависимой справки для диалогового окна.
контекст — необязательный параметр. Числовое выражение, обозначающее номер контекста справки, назначенный автором справки для соответствующего раздела справки. Если предоставляется контекст, также должен быть предоставлен файл справки.
пример
Давайте вычислим площадь прямоугольника путем получения значений от пользователя во время выполнения с помощью двух полей ввода (одно для длины и одно для ширины).
Function findArea() Dim Length As Double Dim Width As Double Length = InputBox("Enter Length ", "Enter a Number") Width = InputBox("Enter Width", "Enter a Number") findArea = Length * Width End Function
Выход
Шаг 1 — Чтобы выполнить то же самое, позвоните, используя имя функции, и нажмите Enter, как показано на следующем снимке экрана.
Шаг 2 — После выполнения отображается первое поле ввода (длина). Введите значение в поле ввода.
Шаг 3 — После ввода первого значения отображается второе поле ввода (ширина).
Шаг 4 — После ввода второго числа нажмите кнопку ОК. Область отображается, как показано на следующем снимке экрана.
VBA — Переменные
Переменная — это именованная ячейка памяти, используемая для хранения значения, которое можно изменить во время выполнения скрипта. Ниже приведены основные правила именования переменных.
-
Вы должны использовать букву в качестве первого символа.
-
Вы не можете использовать пробел, точку (.), Восклицательный знак (!) Или символы @, &, $, # в имени.
-
Длина имени не может превышать 255 символов.
-
Вы не можете использовать зарезервированные ключевые слова Visual Basic в качестве имени переменной.
Вы должны использовать букву в качестве первого символа.
Вы не можете использовать пробел, точку (.), Восклицательный знак (!) Или символы @, &, $, # в имени.
Длина имени не может превышать 255 символов.
Вы не можете использовать зарезервированные ключевые слова Visual Basic в качестве имени переменной.
Синтаксис
В VBA вам необходимо объявить переменные перед их использованием.
Dim <<variable_name>> As <<variable_type>>
Типы данных
Существует много типов данных VBA, которые можно разделить на две основные категории, а именно числовые и нечисловые типы данных.
Числовые типы данных
В следующей таблице приведены числовые типы данных и допустимый диапазон значений.
Тип | Диапазон значений |
---|---|
Байт | От 0 до 255 |
целое число | От -32 768 до 32 767 |
Долго | От -2 147 483 648 до 2 147 483 648 |
не замужем |
-3.402823E + 38 до -1.401298E-45 для отрицательных значений От 1.401298E-45 до 3.402823E + 38 для положительных значений. |
двойной |
-1,79769313486232e + 308 до -4,94065645841247E-324 для отрицательных значений 4.94065645841247E-324 до 1.79769313486232e + 308 для положительных значений. |
валюта | От -922,337,203,685,477.5808 до 922,337,203,685,477.5807 |
Десятичный |
+/- 79,228,162,514,264,337,593,543,950,335, если не используется десятичная дробь +/- 7,9228162514264337593543950335 (28 знаков после запятой). |
-3.402823E + 38 до -1.401298E-45 для отрицательных значений
От 1.401298E-45 до 3.402823E + 38 для положительных значений.
-1,79769313486232e + 308 до -4,94065645841247E-324 для отрицательных значений
4.94065645841247E-324 до 1.79769313486232e + 308 для положительных значений.
+/- 79,228,162,514,264,337,593,543,950,335, если не используется десятичная дробь
+/- 7,9228162514264337593543950335 (28 знаков после запятой).
Нечисловые типы данных
В следующей таблице приведены нечисловые типы данных и допустимый диапазон значений.
Тип | Диапазон значений |
---|---|
Строка (фиксированная длина) | От 1 до 65 400 знаков |
Строка (переменной длины) | От 0 до 2 миллиардов символов |
Дата | С 1 января 100 по 31 декабря 9999 |
логический | Правда или ложь |
объект | Любой вложенный объект |
Вариант (числовой) | Любое значение до двойного |
Вариант (текст) | То же, что и строка переменной длины |
пример
Давайте создадим кнопку и назовем ее «Variables_demo», чтобы продемонстрировать использование переменных.
Private Sub say_helloworld_Click() Dim password As String password = "Admin#1" Dim num As Integer num = 1234 Dim BirthDay As Date BirthDay = DateValue("30 / 10 / 2020") MsgBox "Passowrd is " & password & Chr(10) & "Value of num is " & num & Chr(10) & "Value of Birthday is " & BirthDay End Sub
Выход
После выполнения сценария выходные данные будут такими, как показано на следующем снимке экрана.
VBA — Константы
Константа — это именованная область памяти, используемая для хранения значения, которое НЕ МОЖЕТ быть изменено во время выполнения скрипта. Если пользователь пытается изменить значение константы, выполнение скрипта заканчивается ошибкой. Константы объявляются так же, как и переменные.
Ниже приведены правила именования констант.
-
Вы должны использовать букву в качестве первого символа.
-
Вы не можете использовать пробел, точку (.), Восклицательный знак (!) Или символы @, &, $, # в имени.
-
Длина имени не может превышать 255 символов.
-
Вы не можете использовать зарезервированные ключевые слова Visual Basic в качестве имени переменной.
Вы должны использовать букву в качестве первого символа.
Вы не можете использовать пробел, точку (.), Восклицательный знак (!) Или символы @, &, $, # в имени.
Длина имени не может превышать 255 символов.
Вы не можете использовать зарезервированные ключевые слова Visual Basic в качестве имени переменной.
Синтаксис
В VBA нам нужно присвоить значение объявленным константам. Выдается ошибка, если мы пытаемся изменить значение константы.
Const <<constant_name>> As <<constant_type>> = <<constant_value>>
пример
Давайте создадим кнопку «Constant_demo», чтобы продемонстрировать, как работать с константами.
Private Sub Constant_demo_Click() Const MyInteger As Integer = 42 Const myDate As Date = #2/2/2020# Const myDay As String = "Sunday" MsgBox "Integer is " & MyInteger & Chr(10) & "myDate is " & myDate & Chr(10) & "myDay is " & myDay End Sub
Выход
После выполнения сценария выходные данные будут отображаться, как показано на следующем снимке экрана.
VBA — Операторы
Оператор может быть определен с помощью простого выражения — 4 + 5 равно 9. Здесь 4 и 5 называются операндами, а + — операторами . VBA поддерживает следующие типы операторов —
- Арифметические Операторы
- Операторы сравнения
- Логические (или реляционные) операторы
- Операторы конкатенации
Арифматические операторы
Следующие арифметические операторы поддерживаются VBA.
Предположим, что переменная A содержит 5, а переменная B содержит 10, тогда —
оператор | Описание | пример |
---|---|---|
+ | Добавляет два операнда | А + Б даст 15 |
— | Вычитает второй операнд из первого | А — Б даст -5 |
* | Умножает оба операнда | А * Б даст 50 |
/ | Делит числитель на знаменатель | Б / у даст 2 |
% | Оператор модуля и остаток после целочисленного деления | B% A даст 0 |
^ | Оператор экспонирования | B ^ A даст 100000 |
Операторы сравнения
В VBA поддерживаются следующие операторы сравнения.
Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда —
оператор | Описание | пример |
---|---|---|
знак равно | Проверяет, равны ли значения двух операндов или нет. Если да, то условие верно. | (A = B) является ложным. |
<> | Проверяет, равны ли значения двух операндов или нет. Если значения не равны, то условие выполняется. | (A <> B) верно. |
> | Проверяет, больше ли значение левого операнда, чем значение правого операнда. Если да, то условие верно. | (A> B) является ложным. |
< | Проверяет, меньше ли значение левого операнда, чем значение правого операнда. Если да, то условие верно. | (A <B) верно. |
> = | Проверяет, больше ли значение левого операнда или равно значению правого операнда. Если да, то условие верно. | (A> = B) является ложным. |
<= | Проверяет, меньше ли значение левого операнда или равно значению правого операнда. Если да, то условие верно. | (A <= B) верно. |
Логические операторы
Следующие логические операторы поддерживаются VBA.
Предположим, что переменная A содержит 10, а переменная B содержит 0, тогда —
оператор | Описание | пример |
---|---|---|
А ТАКЖЕ | Называется логический оператор И. Если оба условия истинны, то выражение истинно. | a <> 0 И b <> 0 — Ложь. |
ИЛИ ЖЕ | Вызывается логическим оператором ИЛИ. Если любое из двух условий истинно, то условие истинно. | a <> 0 ИЛИ b <> 0 верно. |
НЕ | Вызывается логическим оператором НЕ. Используется для изменения логического состояния своего операнда. Если условие истинно, то оператор Логический НЕ будет делать ложь. | НЕ (a <> 0 ИЛИ b <> 0) ложно. |
XOR | Называется логическим исключением. Это комбинация оператора NOT и OR. Если одно и только одно из выражений оценивается как Истина, результатом является Истина. | (a <> 0 XOR b <> 0) верно. |
Операторы конкатенации
Следующие операторы конкатенации поддерживаются VBA.
Предположим, что переменная A содержит 5, а переменная B содержит 10, тогда —
оператор | Описание | пример |
---|---|---|
+ | Добавляет два значения в качестве переменной. Значения числовые | А + Б даст 15 |
& | Объединяет два значения | А & Б даст 510 |
Допустим, переменная A = «Microsoft» и переменная B = «VBScript», тогда —
оператор | Описание | пример |
---|---|---|
+ | Объединяет два значения | A + B даст MicrosoftVBScript |
& | Объединяет два значения | A & B предоставит MicrosoftVBScript |
Примечание. Операторы конкатенации могут использоваться как для чисел, так и для строк. Вывод зависит от контекста, если переменные содержат числовое значение или строковое значение.
VBA — Решения
Принятие решений позволяет программистам контролировать ход выполнения скрипта или одного из его разделов. Выполнение регулируется одним или несколькими условными утверждениями.
Ниже приводится общая форма типичной структуры принятия решений, встречающейся в большинстве языков программирования.
VBA предоставляет следующие типы заявлений о принятии решений. Нажмите на следующие ссылки, чтобы проверить их детали.
Sr.No. | Заявление и описание |
---|---|
1 | если заявление
Оператор if состоит из логического выражения, за которым следует один или несколько операторов. |
2 | если .. еще заявление
Оператор if else состоит из логического выражения, за которым следует один или несколько операторов. Если условие истинно, выполняются операторы из операторов If . Если условие ложно, выполняется другая часть сценария. |
3 | если … еще одно заявление
Оператор if, сопровождаемый одним или несколькими операторами ElseIf , который состоит из логических выражений, а затем сопровождается необязательным оператором else , который выполняется, когда все условия становятся ложными. |
4 | вложенные операторы if
Оператор if или elseif внутри другого оператора if или elseif . |
5 | заявление о переключении
Оператор switch позволяет проверять переменную на соответствие списку значений. |
Оператор if состоит из логического выражения, за которым следует один или несколько операторов.
Оператор if else состоит из логического выражения, за которым следует один или несколько операторов. Если условие истинно, выполняются операторы из операторов If . Если условие ложно, выполняется другая часть сценария.
Оператор if, сопровождаемый одним или несколькими операторами ElseIf , который состоит из логических выражений, а затем сопровождается необязательным оператором else , который выполняется, когда все условия становятся ложными.
Оператор if или elseif внутри другого оператора if или elseif .
Оператор switch позволяет проверять переменную на соответствие списку значений.
VBA — Петли
Может возникнуть ситуация, когда вам нужно выполнить блок кода несколько раз. В общем случае операторы выполняются последовательно: первый оператор в функции выполняется первым, затем второй и так далее.
Языки программирования предоставляют различные управляющие структуры, которые допускают более сложные пути выполнения.
Оператор цикла позволяет нам выполнять оператор или группу операторов несколько раз. Ниже приводится общая форма оператора цикла в VBA.
VBA предоставляет следующие типы циклов для обработки требований циклов. Нажмите на следующие ссылки, чтобы проверить их детали.
Sr.No. | Тип и описание петли |
---|---|
1 | для цикла
Выполняет последовательность операторов несколько раз и сокращает код, который управляет переменной цикла. |
2 | для каждого цикла
Это выполняется, если в группе есть хотя бы один элемент, и повторяется для каждого элемента в группе. |
3 | пока .. венд петля
Это проверяет условие перед выполнением тела цикла. |
4 | сделай .. пока петли
Операторы do..While будут выполняться до тех пор, пока условие истинно. (Т. Е.) Цикл должен повторяться до тех пор, пока условие не станет ложным. |
5 | делать .. до петель
Операторы do..Until будут выполняться до тех пор, пока условие имеет значение False (т. Е.) Цикл должен повторяться до тех пор, пока условие не станет True. |
Выполняет последовательность операторов несколько раз и сокращает код, который управляет переменной цикла.
Это выполняется, если в группе есть хотя бы один элемент, и повторяется для каждого элемента в группе.
Это проверяет условие перед выполнением тела цикла.
Операторы do..While будут выполняться до тех пор, пока условие истинно. (Т. Е.) Цикл должен повторяться до тех пор, пока условие не станет ложным.
Операторы do..Until будут выполняться до тех пор, пока условие имеет значение False (т. Е.) Цикл должен повторяться до тех пор, пока условие не станет True.
Заявления о контроле цикла
Операторы управления циклом изменяют выполнение от его нормальной последовательности. Когда выполнение выходит из области видимости, все остальные операторы в цикле НЕ выполняются.
VBA поддерживает следующие операторы управления. Нажмите на следующие ссылки, чтобы проверить их детали.
S.No. | Контрольное заявление и описание |
---|---|
1 | Выход для выписки
Завершает оператор цикла For и передает выполнение в оператор, следующий сразу за циклом |
2 | Выйти Do заявление
Завершает оператор Do While и переносит выполнение в оператор сразу после цикла |
Завершает оператор цикла For и передает выполнение в оператор, следующий сразу за циклом
Завершает оператор Do While и переносит выполнение в оператор сразу после цикла
VBA — Струны
Строки — это последовательность символов, которая может состоять из букв, цифр, специальных символов или всех из них. Переменная называется строкой, если она заключена в двойные кавычки «».
Синтаксис
variablename = "string"
Примеры
str1 = "string" ' Only Alphabets str2 = "132.45" ' Only Numbers str3 = "!@#$;*" ' Only Special Characters Str4 = "Asc23@#" ' Has all the above
Строковые функции
Существуют предопределенные функции VBA String, которые помогают разработчикам очень эффективно работать со строками. Ниже приведены строковые методы, которые поддерживаются в VBA. Пожалуйста, нажмите на каждый из методов, чтобы узнать подробно.
Sr.No. | Название и описание функции |
---|---|
1 | InStr
Возвращает первое вхождение указанной подстроки. Поиск происходит слева направо. |
2 | InStrRev
Возвращает первое вхождение указанной подстроки. Поиск происходит справа налево. |
3 | LCASE
Возвращает нижний регистр указанной строки. |
4 | UCase
Возвращает верхний регистр указанной строки. |
5 | Оставил
Возвращает определенное количество символов с левой стороны строки. |
6 | Правильно
Возвращает определенное количество символов с правой стороны строки. |
7 | средний
Возвращает определенное количество символов из строки на основе указанных параметров. |
8 | LTrim
Возвращает строку после удаления пробелов в левой части указанной строки. |
9 | RTrim
Возвращает строку после удаления пробелов с правой стороны указанной строки. |
10 | Отделка
Возвращает строковое значение после удаления начальных и конечных пробелов. |
11 | Len
Возвращает длину заданной строки. |
12 | замещать
Возвращает строку после замены строки другой строкой. |
13 | Космос
Заполняет строку указанным количеством пробелов. |
14 | StrComp
Возвращает целочисленное значение после сравнения двух указанных строк. |
15 | строка
Возвращает строку с указанным символом указанное количество раз. |
16 | StrReverse
Возвращает строку после изменения последовательности символов данной строки. |
Возвращает первое вхождение указанной подстроки. Поиск происходит слева направо.
Возвращает первое вхождение указанной подстроки. Поиск происходит справа налево.
Возвращает нижний регистр указанной строки.
Возвращает верхний регистр указанной строки.
Возвращает определенное количество символов с левой стороны строки.
Возвращает определенное количество символов с правой стороны строки.
Возвращает определенное количество символов из строки на основе указанных параметров.
Возвращает строку после удаления пробелов в левой части указанной строки.
Возвращает строку после удаления пробелов с правой стороны указанной строки.
Возвращает строковое значение после удаления начальных и конечных пробелов.
Возвращает длину заданной строки.
Возвращает строку после замены строки другой строкой.
Заполняет строку указанным количеством пробелов.
Возвращает целочисленное значение после сравнения двух указанных строк.
Возвращает строку с указанным символом указанное количество раз.
Возвращает строку после изменения последовательности символов данной строки.
VBA — функция даты и времени
Функции даты и времени VBScript помогают разработчикам преобразовывать дату и время из одного формата в другой или выражать значение даты или времени в формате, соответствующем определенному условию.
Функции даты
Sr.No. | Описание функции |
---|---|
1 | Дата
Функция, которая возвращает текущую системную дату. |
2 | CDate
Функция, которая преобразует данный вход в дату. |
3 | DateAdd
Функция, которая возвращает дату, к которой был добавлен указанный интервал времени. |
4 | DateDiff
Функция, которая возвращает разницу между двумя периодами времени. |
5 | DatePart
Функция, которая возвращает указанную часть заданного значения даты ввода. |
6 | DateSerial
Функция, которая возвращает действительную дату для данного года, месяца и даты. |
7 | FormatDateTime
Функция, которая форматирует дату на основе предоставленных параметров. |
8 | IsDate
Функция, которая возвращает логическое значение независимо от того, является ли предоставленный параметр датой. |
9 | День
Функция, которая возвращает целое число от 1 до 31, представляющее день указанной даты. |
10 | Месяц
Функция, которая возвращает целое число от 1 до 12, представляющее месяц указанной даты. |
11 | Год
Функция, которая возвращает целое число, представляющее год указанной даты. |
12 | MonthName
Функция, которая возвращает название определенного месяца для указанной даты. |
13 | WeekDay
Функция, которая возвращает целое число (от 1 до 7), которое представляет день недели для указанного дня. |
14 | WeekDayName
Функция, которая возвращает название дня недели для указанного дня. |
Функция, которая возвращает текущую системную дату.
Функция, которая преобразует данный вход в дату.
Функция, которая возвращает дату, к которой был добавлен указанный интервал времени.
Функция, которая возвращает разницу между двумя периодами времени.
Функция, которая возвращает указанную часть заданного значения даты ввода.
Функция, которая возвращает действительную дату для данного года, месяца и даты.
Функция, которая форматирует дату на основе предоставленных параметров.
Функция, которая возвращает логическое значение независимо от того, является ли предоставленный параметр датой.
Функция, которая возвращает целое число от 1 до 31, представляющее день указанной даты.
Функция, которая возвращает целое число от 1 до 12, представляющее месяц указанной даты.
Функция, которая возвращает целое число, представляющее год указанной даты.
Функция, которая возвращает название определенного месяца для указанной даты.
Функция, которая возвращает целое число (от 1 до 7), которое представляет день недели для указанного дня.
Функция, которая возвращает название дня недели для указанного дня.
Функции времени
Sr.No. | Описание функции |
---|---|
1 | Сейчас
Функция, которая возвращает текущую системную дату и время. |
2 | Час
Функция, которая возвращает целое число от 0 до 23, представляющее часовую часть данного времени. |
3 | минут
Функция, которая возвращает целое число от 0 до 59, которое представляет часть минут данного времени. |
4 | второй
Функция, которая возвращает целое число от 0 до 59, которое представляет часть секунд данного времени. |
5 | Время
Функция, которая возвращает текущее системное время. |
6 | таймер
Функция, которая возвращает количество секунд и миллисекунд с 12:00. |
7 | TimeSerial
Функция, которая возвращает время для конкретного ввода часов, минут и секунд. |
8 | TimeValue
Функция, которая преобразует входную строку в формат времени. |
Функция, которая возвращает текущую системную дату и время.
Функция, которая возвращает целое число от 0 до 23, представляющее часовую часть данного времени.
Функция, которая возвращает целое число от 0 до 59, которое представляет часть минут данного времени.
Функция, которая возвращает целое число от 0 до 59, которое представляет часть секунд данного времени.
Функция, которая возвращает текущее системное время.
Функция, которая возвращает количество секунд и миллисекунд с 12:00.
Функция, которая возвращает время для конкретного ввода часов, минут и секунд.
Функция, которая преобразует входную строку в формат времени.
VBA — Массивы
Мы очень хорошо знаем, что переменная является контейнером для хранения значения. Иногда разработчики могут одновременно хранить более одного значения в одной переменной. Когда ряд значений хранится в одной переменной, она называется переменной массива .
Декларация массива
Массивы объявляются так же, как и переменная, за исключением того, что объявление переменной массива использует круглые скобки. В следующем примере размер массива указан в скобках.
'Method 1 : Using Dim Dim arr1() 'Without Size 'Method 2 : Mentioning the Size Dim arr2(5) 'Declared with size of 5 'Method 3 : using 'Array' Parameter Dim arr3 arr3 = Array("apple","Orange","Grapes")
-
Хотя размер массива указан как 5, он может содержать 6 значений, так как индекс массива начинается с нуля.
-
Индекс массива не может быть отрицательным.
-
Массивы VBScript могут хранить переменные любого типа в массиве. Следовательно, массив может хранить целое число, строку или символы в одной переменной массива.
Хотя размер массива указан как 5, он может содержать 6 значений, так как индекс массива начинается с нуля.
Индекс массива не может быть отрицательным.
Массивы VBScript могут хранить переменные любого типа в массиве. Следовательно, массив может хранить целое число, строку или символы в одной переменной массива.
Присвоение значений массиву
Значения присваиваются массиву путем указания значения индекса массива для каждого из назначаемых значений. Это может быть строка.
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click() Dim arr(5) arr(0) = "1" 'Number as String arr(1) = "VBScript" 'String arr(2) = 100 'Number arr(3) = 2.45 'Decimal Number arr(4) = #10/07/2013# 'Date arr(5) = #12.45 PM# 'Time msgbox("Value stored in Array index 0 : " & arr(0)) msgbox("Value stored in Array index 1 : " & arr(1)) msgbox("Value stored in Array index 2 : " & arr(2)) msgbox("Value stored in Array index 3 : " & arr(3)) msgbox("Value stored in Array index 4 : " & arr(4)) msgbox("Value stored in Array index 5 : " & arr(5)) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Value stored in Array index 0 : 1 Value stored in Array index 1 : VBScript Value stored in Array index 2 : 100 Value stored in Array index 3 : 2.45 Value stored in Array index 4 : 7/10/2013 Value stored in Array index 5 : 12:45:00 PM
Многомерные массивы
Массивы не просто ограничены одним измерением, однако они могут иметь максимум 60 измерений. Двумерные массивы являются наиболее часто используемыми.
пример
В следующем примере объявляется многомерный массив с 3 строками и 4 столбцами.
Private Sub Constant_demo_Click() Dim arr(2,3) as Variant ' Which has 3 rows and 4 columns arr(0,0) = "Apple" arr(0,1) = "Orange" arr(0,2) = "Grapes" arr(0,3) = "pineapple" arr(1,0) = "cucumber" arr(1,1) = "beans" arr(1,2) = "carrot" arr(1,3) = "tomato" arr(2,0) = "potato" arr(2,1) = "sandwitch" arr(2,2) = "coffee" arr(2,3) = "nuts" msgbox("Value in Array index 0,1 : " & arr(0,1)) msgbox("Value in Array index 2,2 : " & arr(2,2)) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Value stored in Array index : 0 , 1 : Orange Value stored in Array index : 2 , 2 : coffee
ReDim Заявление
Оператор ReDim используется для объявления переменных динамического массива и выделения или перераспределения пространства хранения.
Синтаксис
ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
Описание параметра
-
Сохранять — необязательный параметр, используемый для сохранения данных в существующем массиве при изменении размера последнего измерения.
-
Varname — обязательный параметр, который обозначает имя переменной, которое должно соответствовать стандартным соглашениям об именах переменных.
-
Subscripts — обязательный параметр, который указывает размер массива.
Сохранять — необязательный параметр, используемый для сохранения данных в существующем массиве при изменении размера последнего измерения.
Varname — обязательный параметр, который обозначает имя переменной, которое должно соответствовать стандартным соглашениям об именах переменных.
Subscripts — обязательный параметр, который указывает размер массива.
пример
В следующем примере массив был переопределен, а затем значения сохранены при изменении существующего размера массива.
Примечание. При изменении размера массива, меньшего, чем он был изначально, данные в удаленных элементах будут потеряны.
Private Sub Constant_demo_Click() Dim a() as variant i = 0 redim a(5) a(0) = "XYZ" a(1) = 41.25 a(2) = 22 REDIM PRESERVE a(7) For i = 3 to 7 a(i) = i Next 'to Fetch the output For i = 0 to ubound(a) Msgbox a(i) Next End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
XYZ 41.25 22 3 4 5 6 7
Методы массива
В VBScript есть различные встроенные функции, которые помогают разработчикам эффективно обрабатывать массивы. Все методы, которые используются в сочетании с массивами, перечислены ниже. Пожалуйста, нажмите на название метода, чтобы узнать о нем подробно.
Sr.No. | Описание функции |
---|---|
1 | LBound
Функция, которая возвращает целое число, соответствующее наименьшему нижнему индексу из указанных массивов. |
2 | UBound
Функция, которая возвращает целое число, соответствующее наибольшему нижнему индексу заданных массивов. |
3 | Трещина
Функция, которая возвращает массив, содержащий указанное количество значений. Разделить на основе разделителя. |
4 | Присоединиться
Функция, которая возвращает строку, которая содержит указанное количество подстрок в массиве. Это прямо противоположная функция метода разделения. |
5 | Фильтр
Функция, которая возвращает нулевой массив, который содержит подмножество строкового массива на основе определенных критериев фильтра. |
6 | IsArray
Функция, которая возвращает логическое значение, указывающее, является ли входная переменная массивом. |
7 | стирать
Функция, которая восстанавливает выделенную память для переменных массива. |
Функция, которая возвращает целое число, соответствующее наименьшему нижнему индексу из указанных массивов.
Функция, которая возвращает целое число, соответствующее наибольшему нижнему индексу заданных массивов.
Функция, которая возвращает массив, содержащий указанное количество значений. Разделить на основе разделителя.
Функция, которая возвращает строку, которая содержит указанное количество подстрок в массиве. Это прямо противоположная функция метода разделения.
Функция, которая возвращает нулевой массив, который содержит подмножество строкового массива на основе определенных критериев фильтра.
Функция, которая возвращает логическое значение, указывающее, является ли входная переменная массивом.
Функция, которая восстанавливает выделенную память для переменных массива.
VBA — Пользовательские функции
Функция — это группа многократно используемого кода, который можно вызывать в любом месте вашей программы. Это устраняет необходимость писать один и тот же код снова и снова. Это позволяет программистам разделить большую программу на ряд небольших и управляемых функций.
Помимо встроенных функций, VBA позволяет также писать пользовательские функции. В этой главе вы узнаете, как писать свои собственные функции в VBA.
Определение функции
Функция VBA может иметь необязательный оператор возврата. Это необходимо, если вы хотите вернуть значение из функции.
Например, вы можете передать два числа в функцию, а затем ожидать от функции возврата их умножения в вызывающей программе.
Примечание . Функция может возвращать несколько значений, разделенных запятой, в виде массива, назначенного имени функции.
Прежде чем использовать функцию, нам нужно определить эту конкретную функцию. Наиболее распространенный способ определения функции в VBA — использование ключевого слова Function , за которым следует уникальное имя функции, которое может содержать или не содержать список параметров и оператор с ключевым словом End Function , который указывает конец функции. Ниже приведен основной синтаксис.
Синтаксис
Добавьте кнопку и добавьте следующую функцию.
Function Functionname(parameter-list) statement 1 statement 2 statement 3 ....... statement n End Function
пример
Добавьте следующую функцию, которая возвращает область. Обратите внимание, что значение / значения могут быть возвращены с самим именем функции.
Function findArea(Length As Double, Optional Width As Variant) If IsMissing(Width) Then findArea = Length * Length Else findArea = Length * Width End If End Function
Вызов функции
Чтобы вызвать функцию, вызовите функцию, используя имя функции, как показано на следующем снимке экрана.
Вывод области, как показано ниже, будет отображаться пользователю.
VBA — подпроцедура
Подпроцедуры похожи на функции, однако есть несколько отличий.
-
Подпроцедуры НЕ возвращают значение, в то время как функции могут возвращать или не возвращать значение.
-
Подпроцедуры МОГУТ быть вызваны без ключевого слова вызова.
-
Подпроцедуры всегда заключены в инструкции Sub и End Sub.
Подпроцедуры НЕ возвращают значение, в то время как функции могут возвращать или не возвращать значение.
Подпроцедуры МОГУТ быть вызваны без ключевого слова вызова.
Подпроцедуры всегда заключены в инструкции Sub и End Sub.
пример
Sub Area(x As Double, y As Double) MsgBox x * y End Sub
Процедуры вызова
Чтобы вызвать процедуру где-нибудь в скрипте, вы можете сделать вызов из функции. Мы не сможем использовать тот же способ, что и для функции, так как подпроцедура НЕ возвратит значение.
Function findArea(Length As Double, Width As Variant) area Length, Width ' To Calculate Area 'area' sub proc is called End Function
Теперь вы сможете вызывать только функцию, но не подпроцедуру, как показано на следующем снимке экрана.
Площадь рассчитывается и отображается только в окне сообщения.
В ячейке результата отображается НОЛЬ, так как значение области НЕ возвращается из функции. Короче говоря, вы не можете сделать прямой вызов подпроцедуры из листа Excel.
VBA — События
VBA, программирование, управляемое событиями, может быть запущено, когда вы вручную изменяете ячейку или диапазон значений ячейки. Изменение события может упростить задачу, но вы можете очень быстро завершить страницу, полную форматирования. Есть два вида событий.
- События рабочего листа
- Рабочая тетрадь События
События рабочего листа
События рабочего листа инициируются при изменении рабочего листа. Он создается путем щелчка правой кнопкой мыши на вкладке листа и выбора «просмотра кода», а затем вставки кода.
Пользователь может выбрать каждый из этих рабочих листов и выбрать «Рабочий лист» из выпадающего списка, чтобы получить список всех поддерживаемых событий рабочего листа.
Ниже приведены поддерживаемые события рабочего листа, которые могут быть добавлены пользователем.
Private Sub Worksheet_Activate() Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Private Sub Worksheet_Calculate() Private Sub Worksheet_Change(ByVal Target As Range) Private Sub Worksheet_Deactivate() Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Private Sub Worksheet_SelectionChange(ByVal Target As Range)
пример
Допустим, нам просто нужно отобразить сообщение перед двойным щелчком.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox "Before Double Click" End Sub
Выход
При двойном щелчке по любой ячейке окно сообщения отображается пользователю, как показано на следующем снимке экрана.
Рабочая тетрадь События
События рабочей книги инициируются, когда происходит изменение рабочей книги в целом. Мы можем добавить код для событий рабочей книги, выбрав «ThisWorkbook» и выбрав «рабочая книга» из выпадающего списка, как показано на следующем снимке экрана. Немедленно подпрограмма Workbook_open отображается пользователю, как показано на следующем снимке экрана.
Ниже приведены поддерживаемые события Workbook, которые могут быть добавлены пользователем.
Private Sub Workbook_AddinUninstall() Private Sub Workbook_BeforeClose(Cancel As Boolean) Private Sub Workbook_BeforePrint(Cancel As Boolean) Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Private Sub Workbook_Deactivate() Private Sub Workbook_NewSheet(ByVal Sh As Object) Private Sub Workbook_Open() Private Sub Workbook_SheetActivate(ByVal Sh As Object) Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Private Sub Workbook_SheetCalculate(ByVal Sh As Object) Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Private Sub Workbook_WindowActivate(ByVal Wn As Window) Private Sub Workbook_WindowDeactivate(ByVal Wn As Window) Private Sub Workbook_WindowResize(ByVal Wn As Window)
пример
Допустим, нам просто нужно отобразить пользователю сообщение о том, что новый лист успешно создан, каждый раз, когда создается новый лист.
Private Sub Workbook_NewSheet(ByVal Sh As Object) MsgBox "New Sheet Created Successfully" End Sub
Выход
После создания нового листа Excel пользователю отображается сообщение, как показано на следующем снимке экрана.
VBA — Обработка ошибок
Существует три типа ошибок в программировании: (a) синтаксические ошибки, (b) ошибки времени выполнения и (c) логические ошибки.
Синтаксические ошибки
Синтаксические ошибки, также называемые ошибками синтаксического анализа, возникают во время интерпретации VBScript. Например, следующая строка вызывает синтаксическую ошибку, поскольку в ней отсутствует закрывающая скобка.
Function ErrorHanlding_Demo() dim x,y x = "Tutorialspoint" y = Ucase(x End Function
Ошибки во время выполнения
Ошибки времени выполнения, также называемые исключениями, возникают во время выполнения после интерпретации.
Например, следующая строка вызывает ошибку во время выполнения, потому что здесь синтаксис правильный, но во время выполнения он пытается вызвать fnmultiply, который является несуществующей функцией.
Function ErrorHanlding_Demo1() Dim x,y x = 10 y = 20 z = fnadd(x,y) a = fnmultiply(x,y) End Function Function fnadd(x,y) fnadd = x + y End Function
Логические ошибки
Логические ошибки могут быть наиболее сложным типом ошибок для отслеживания. Эти ошибки не являются результатом синтаксиса или ошибки времени выполнения. Вместо этого они возникают, когда вы совершаете ошибку в логике, управляющей вашим сценарием, и вы не получаете ожидаемого результата.
Вы не можете поймать эти ошибки, потому что это зависит от требований вашего бизнеса, какую логику вы хотите использовать в своей программе.
Например, деление числа на ноль или написанного скрипта, который входит в бесконечный цикл.
Err Object
Предположим, если у нас есть ошибка во время выполнения, то выполнение останавливается, отображая сообщение об ошибке. Как разработчик, если мы хотим зафиксировать ошибку, то используется Error Object.
пример
В следующем примере Err.Number дает номер ошибки, а Err.Description — описание ошибки.
Err.Raise 6 ' Raise an overflow error. MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description Err.Clear ' Clear the error.
Обработка ошибок
VBA включает подпрограмму обработки ошибок, а также может использоваться для отключения подпрограммы обработки ошибок. Без оператора On Error любая ошибка во время выполнения является фатальной: отображается сообщение об ошибке, и выполнение резко останавливается.
On Error { GoTo [ line | 0 | -1 ] | Resume Next }
Sr.No. | Ключевое слово и описание |
---|---|
1 |
Линия GoTo Включает процедуру обработки ошибок, которая начинается со строки, указанной в требуемом аргументе строки. Указанная строка должна быть в той же процедуре, что и оператор On Error, иначе произойдет ошибка времени компиляции. |
2 |
Перейти 0 Отключает включенный обработчик ошибок в текущей процедуре и сбрасывает его в Nothing. |
3 |
GoTo -1 Отключает включенное исключение в текущей процедуре и сбрасывает его в Nothing. |
4 |
Продолжить дальше Указывает, что при возникновении ошибки во время выполнения элемент управления переходит к оператору, который следует сразу за оператором, в котором произошла ошибка, и выполнение продолжается с этой точки. |
Линия GoTo
Включает процедуру обработки ошибок, которая начинается со строки, указанной в требуемом аргументе строки. Указанная строка должна быть в той же процедуре, что и оператор On Error, иначе произойдет ошибка времени компиляции.
Перейти 0
Отключает включенный обработчик ошибок в текущей процедуре и сбрасывает его в Nothing.
GoTo -1
Отключает включенное исключение в текущей процедуре и сбрасывает его в Nothing.
Продолжить дальше
Указывает, что при возникновении ошибки во время выполнения элемент управления переходит к оператору, который следует сразу за оператором, в котором произошла ошибка, и выполнение продолжается с этой точки.
пример
Public Sub OnErrorDemo() On Error GoTo ErrorHandler ' Enable error-handling routine. Dim x, y, z As Integer x = 50 y = 0 z = x / y ' Divide by ZERO Error Raises ErrorHandler: ' Error-handling routine. Select Case Err.Number ' Evaluate error number. Case 10 ' Divide by zero error MsgBox ("You attempted to divide by zero!") Case Else MsgBox "UNKNOWN ERROR - Error# " & Err.Number & " : " & Err.Description End Select Resume Next End Sub
VBA — объекты Excel
При программировании с использованием VBA есть несколько важных объектов, с которыми пользователь будет иметь дело.
- Объекты приложения
- Объекты рабочей книги
- Объекты рабочего листа
- Диапазон объектов
Объекты приложения
Объект Application состоит из следующих элементов:
- Общесоциальные настройки и опции.
- Методы, которые возвращают объекты верхнего уровня, такие как ActiveCell, ActiveSheet и т. Д.
пример
'Example 1 : Set xlapp = CreateObject("Excel.Sheet") xlapp.Application.Workbooks.Open "C:\test.xls" 'Example 2 : Application.Windows("test.xls").Activate 'Example 3: Application.ActiveCell.Font.Bold = True
Объекты рабочей книги
Объект Workbook является членом коллекции Workbooks и содержит все объекты Workbook, открытые в настоящее время в Microsoft Excel.
пример
'Ex 1 : To close Workbooks Workbooks.Close 'Ex 2 : To Add an Empty Work Book Workbooks.Add 'Ex 3: To Open a Workbook Workbooks.Open FileName:="Test.xls", ReadOnly:=True 'Ex : 4 - To Activate WorkBooks Workbooks("Test.xls").Worksheets("Sheet1").Activate
Объекты рабочего листа
Объект Worksheet является членом коллекции Worksheets и содержит все объекты Worksheet в рабочей книге.
пример
'Ex 1 : To make it Invisible Worksheets(1).Visible = False 'Ex 2 : To protect an WorkSheet Worksheets("Sheet1").Protect password:=strPassword, scenarios:=True
Диапазон объектов
Объекты Range представляют ячейку, строку, столбец или выборку ячеек, содержащих один или несколько непрерывных блоков ячеек.
'Ex 1 : To Put a value in the cell A5 Worksheets("Sheet1").Range("A5").Value = "5235" 'Ex 2 : To put a value in range of Cells Worksheets("Sheet1").Range("A1:A4").Value = 5
VBA — Текстовые файлы
Вы также можете прочитать файл Excel и записать содержимое ячейки в текстовый файл, используя VBA. VBA позволяет пользователям работать с текстовыми файлами двумя способами:
- Объект файловой системы
- используя команду записи
Объект файловой системы (FSO)
Как следует из названия, FSO помогают разработчикам работать с дисками, папками и файлами. В этом разделе мы обсудим, как использовать FSO.
Sr.No. | Тип объекта и описание |
---|---|
1 |
Привод Драйв — это объект. Содержит методы и свойства, которые позволяют собирать информацию о диске, подключенном к системе. |
2 |
приводы Диски это коллекция. Он предоставляет список дисков, подключенных к системе, физически или логически. |
3 |
файл Файл является объектом. Он содержит методы и свойства, которые позволяют разработчикам создавать, удалять или перемещать файл. |
4 |
файлы Файлы это коллекция. Он предоставляет список всех файлов, содержащихся в папке. |
5 |
скоросшиватель Папка — это объект. Он предоставляет методы и свойства, которые позволяют разработчикам создавать, удалять или перемещать папки. |
6 |
Папки Папки это коллекция. Он предоставляет список всех папок в папке. |
7 |
TextStream TextStream — это объект. Это позволяет разработчикам читать и писать текстовые файлы. |
Привод
Драйв — это объект. Содержит методы и свойства, которые позволяют собирать информацию о диске, подключенном к системе.
приводы
Диски это коллекция. Он предоставляет список дисков, подключенных к системе, физически или логически.
файл
Файл является объектом. Он содержит методы и свойства, которые позволяют разработчикам создавать, удалять или перемещать файл.
файлы
Файлы это коллекция. Он предоставляет список всех файлов, содержащихся в папке.
скоросшиватель
Папка — это объект. Он предоставляет методы и свойства, которые позволяют разработчикам создавать, удалять или перемещать папки.
Папки
Папки это коллекция. Он предоставляет список всех папок в папке.
TextStream
TextStream — это объект. Это позволяет разработчикам читать и писать текстовые файлы.
Привод
Диск — это объект, который обеспечивает доступ к свойствам конкретного диска или общей сетевой папки. Следующие свойства поддерживаются объектом Drive —
- Доступное пространство
- DriveLetter
- Тип вождения
- Файловая система
- Свободное место
- Готов
- Дорожка
- Корневая папка
- Серийный номер
- ShareName
- Общий размер
- VolumeName
пример
Шаг 1. Прежде чем приступить к написанию сценариев с использованием FSO, мы должны включить Microsoft Scripting Runtime. Чтобы сделать то же самое, перейдите в Инструменты → Ссылки, как показано на следующем снимке экрана.
Шаг 2. Добавьте «Microsoft Scripting RunTime» и нажмите «ОК».
Шаг 3 — Добавьте данные, которые вы хотели бы записать в текстовый файл, и добавьте командную кнопку.
Шаг 4 — Теперь пришло время для сценария.
Private Sub fn_write_to_text_Click() Dim FilePath As String Dim CellData As String Dim LastCol As Long Dim LastRow As Long Dim fso As FileSystemObject Set fso = New FileSystemObject Dim stream As TextStream LastCol = ActiveSheet.UsedRange.Columns.Count LastRow = ActiveSheet.UsedRange.Rows.Count ' Create a TextStream. Set stream = fso.OpenTextFile("D:\Try\Support.log", ForWriting, True) CellData = "" For i = 1 To LastRow For j = 1 To LastCol CellData = Trim(ActiveCell(i, j).Value) stream.WriteLine "The Value at location (" & i & "," & j & ")" & CellData Next j Next i stream.Close MsgBox ("Job Done") End Sub
Выход
При выполнении сценария убедитесь, что курсор помещен в первую ячейку рабочего листа. Файл Support.log создается, как показано на следующем снимке экрана в разделе «D: \ Try».
Содержимое файла показано на следующем снимке экрана.
Написать команду
В отличие от FSO, нам НЕ нужно добавлять ссылки, однако мы НЕ сможем работать с дисками, файлами и папками. Мы сможем просто добавить поток в текстовый файл.
пример
Private Sub fn_write_to_text_Click() Dim FilePath As String Dim CellData As String Dim LastCol As Long Dim LastRow As Long LastCol = ActiveSheet.UsedRange.Columns.Count LastRow = ActiveSheet.UsedRange.Rows.Count FilePath = "D:\Try\write.txt" Open FilePath For Output As #2 CellData = "" For i = 1 To LastRow For j = 1 To LastCol CellData = "The Value at location (" & i & "," & j & ")" & Trim(ActiveCell(i, j).Value) Write #2, CellData Next j Next i Close #2 MsgBox ("Job Done") End Sub
Выход
После выполнения сценария файл «write.txt» создается в папке «D: \ Try», как показано на следующем снимке экрана.
Содержимое файла показано на следующем снимке экрана.
VBA — Графики программирования
Используя VBA, вы можете создавать графики на основе определенных критериев. Давайте посмотрим на это на примере.
Шаг 1 — Введите данные, по которым должен быть сгенерирован график.
Шаг 2 — Создайте 3 кнопки — одну для создания гистограммы, другую для создания круговой диаграммы и другую для создания столбчатой диаграммы.
Шаг 3 — Разработайте макрос, чтобы сгенерировать каждый из этих типов диаграмм.
' Procedure to Generate Pie Chart Private Sub fn_generate_pie_graph_Click() Dim cht As ChartObject For Each cht In Worksheets(1).ChartObjects cht.Chart.Type = xlPie Next cht End Sub ' Procedure to Generate Bar Graph Private Sub fn_Generate_Bar_Graph_Click() Dim cht As ChartObject For Each cht In Worksheets(1).ChartObjects cht.Chart.Type = xlBar Next cht End Sub ' Procedure to Generate Column Graph Private Sub fn_generate_column_graph_Click() Dim cht As ChartObject For Each cht In Worksheets(1).ChartObjects cht.Chart.Type = xlColumn Next cht End Sub
Шаг 4 — При нажатии на соответствующую кнопку создается диаграмма. В следующем выводе нажмите кнопку «Сгенерировать круговую диаграмму».
VBA — формы пользователя
Форма пользователя — это настраиваемое диалоговое окно, которое делает ввод пользовательских данных более управляемым и более простым в использовании для пользователя. В этой главе вы научитесь разрабатывать простую форму и добавлять данные в Excel.
Шаг 1 — Перейдите к окну VBA, нажав Alt + F11 и перейдите к меню «Вставить» и выберите «Форма пользователя». После выбора форма пользователя отображается, как показано на следующем снимке экрана.
Шаг 2 — Разработка форм с использованием заданных элементов управления.
Шаг 3 — После добавления каждого элемента управления, элементы управления должны быть названы. Заголовок соответствует тому, что отображается в форме, а имя соответствует логическому имени, которое будет появляться при написании кода VBA для этого элемента.
Шаг 4 — Ниже приведены имена против каждого из добавленных элементов управления.
контроль | Логическое имя | титр |
---|---|---|
От | frmempform | Форма сотрудника |
Идентификационная этикетка сотрудника | EmpID | ID сотрудника |
Имя Label Box | имя | Имя |
фамилия этикетка | Фамилия | Фамилия |
Dob Label Box | дата рождения | Дата рождения |
Mailid Label Box | почтовый идентификатор | Email ID |
Этикетка для паспорта | Держатель паспорта | Держатель паспорта |
Текстовое поле Emp ID | txtempid | Непригодный |
Имя Текстовое поле | txtfirstname | Непригодный |
Фамилия Текстовое поле | txtlastname | Непригодный |
Текстовое поле идентификатора электронной почты | txtemailid | Непригодный |
Поле со списком даты | cmbdate | Непригодный |
Поле со списком месяцев | cmbmonth | Непригодный |
Поле со списком | cmbyear | Непригодный |
Да радио кнопка | radioyes | да |
Нет радио кнопки | radiono | нет |
Кнопка «Отправить» | btnsubmit | Отправить |
Кнопка Отмена | btncancel | отменить |
Шаг 5 — Добавьте код для события загрузки формы, выполнив щелчок правой кнопкой мыши на форме и выбрав «Просмотреть код».
Шаг 6 — Выберите «Userform» из выпадающего списка объектов и выберите метод «Initialize», как показано на следующем снимке экрана.
Шаг 7 — После загрузки формы убедитесь, что текстовые поля очищены, раскрывающиеся окна заполнены и переключатели сброшены.
Private Sub UserForm_Initialize() 'Empty Emp ID Text box and Set the Cursor txtempid.Value = "" txtempid.SetFocus 'Empty all other text box fields txtfirstname.Value = "" txtlastname.Value = "" txtemailid.Value = "" 'Clear All Date of Birth Related Fields cmbdate.Clear cmbmonth.Clear cmbyear.Clear 'Fill Date Drop Down box - Takes 1 to 31 With cmbdate .AddItem "1" .AddItem "2" .AddItem "3" .AddItem "4" .AddItem "5" .AddItem "6" .AddItem "7" .AddItem "8" .AddItem "9" .AddItem "10" .AddItem "11" .AddItem "12" .AddItem "13" .AddItem "14" .AddItem "15" .AddItem "16" .AddItem "17" .AddItem "18" .AddItem "19" .AddItem "20" .AddItem "21" .AddItem "22" .AddItem "23" .AddItem "24" .AddItem "25" .AddItem "26" .AddItem "27" .AddItem "28" .AddItem "29" .AddItem "30" .AddItem "31" End With 'Fill Month Drop Down box - Takes Jan to Dec With cmbmonth .AddItem "JAN" .AddItem "FEB" .AddItem "MAR" .AddItem "APR" .AddItem "MAY" .AddItem "JUN" .AddItem "JUL" .AddItem "AUG" .AddItem "SEP" .AddItem "OCT" .AddItem "NOV" .AddItem "DEC" End With 'Fill Year Drop Down box - Takes 1980 to 2014 With cmbyear .AddItem "1980" .AddItem "1981" .AddItem "1982" .AddItem "1983" .AddItem "1984" .AddItem "1985" .AddItem "1986" .AddItem "1987" .AddItem "1988" .AddItem "1989" .AddItem "1990" .AddItem "1991" .AddItem "1992" .AddItem "1993" .AddItem "1994" .AddItem "1995" .AddItem "1996" .AddItem "1997" .AddItem "1998" .AddItem "1999" .AddItem "2000" .AddItem "2001" .AddItem "2002" .AddItem "2003" .AddItem "2004" .AddItem "2005" .AddItem "2006" .AddItem "2007" .AddItem "2008" .AddItem "2009" .AddItem "2010" .AddItem "2011" .AddItem "2012" .AddItem "2013" .AddItem "2014" End With 'Reset Radio Button. Set it to False when form loads. radioyes.Value = False radiono.Value = False End Sub
Шаг 8 — Теперь добавьте код в кнопку «Отправить». Нажав кнопку «Отправить», пользователь сможет добавить значения в таблицу.
Private Sub btnsubmit_Click() Dim emptyRow As Long 'Make Sheet1 active Sheet1.Activate 'Determine emptyRow emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 'Transfer information Cells(emptyRow, 1).Value = txtempid.Value Cells(emptyRow, 2).Value = txtfirstname.Value Cells(emptyRow, 3).Value = txtlastname.Value Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value Cells(emptyRow, 5).Value = txtemailid.Value If radioyes.Value = True Then Cells(emptyRow, 6).Value = "Yes" Else Cells(emptyRow, 6).Value = "No" End If End Sub
Шаг 9 — Добавьте метод, чтобы закрыть форму, когда пользователь нажимает кнопку Отмена.
Private Sub btncancel_Click() Unload Me End Sub
Шаг 10 — Заполните форму, нажав кнопку «Выполнить». Введите значения в форму и нажмите кнопку «Отправить». Автоматически значения будут перетекать в лист, как показано на следующем снимке экрана.