Учебники

VBA — Краткое руководство

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, как показано на следующем снимке экрана.

Заявления о принятии решений в VBScript

VBA — Макросы Excel

В этой главе вы узнаете, как написать простой макрос шаг за шагом.

Шаг 1. Сначала включите меню «Разработчик» в Excel 20XX. Чтобы сделать то же самое, нажмите Файл → Параметры.

Шаг 2 — Нажмите «Настроить ленту» и выберите «Разработчик». Нажмите «ОК».

Разработчик в VBScript

Шаг 3 — Лента «Разработчик» появляется в строке меню.

Разработчик в VBScript

Шаг 4 — Нажмите кнопку «Visual Basic», чтобы открыть редактор VBA.

Разработчик в VBScript

Шаг 5 — Запустите сценарий, добавив кнопку. Нажмите Вставить → Выберите кнопку.

Разработчик в VBScript

Шаг 6 — Выполните щелчок правой кнопкой мыши и выберите «Свойства».

Разработчик в VBScript

Шаг 7 — Измените имя и подпись, как показано на следующем снимке экрана.

Разработчик в VBScript

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

Разработчик в VBScript

Шаг 9 — Начните кодирование, просто добавив сообщение.

Private Sub say_helloworld_Click()
   MsgBox "Hi"
End Sub

Шаг 10 — Нажмите кнопку, чтобы выполнить подпроцедуру. Вывод подпроцедуры показан на следующем снимке экрана.

Разработчик в VBScript

Примечание. В следующих главах мы продемонстрируем использование простой кнопки, как описано в шагах с 1 по 10. Следовательно, важно тщательно понять эту главу.

VBA — Excel Условия

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

Модули

Модули — это область, где написан код. Это новая рабочая тетрадь, поэтому никаких модулей нет.

Модуль в VBScript

Чтобы вставить модуль, перейдите к Вставка → Модуль. Как только модуль вставлен, «module1» будет создан.

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

Модуль в VBScript

Процедура

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

Двумя основными типами процедур являются Sub и Function.

Модуль в VBScript

функция

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

Помимо встроенных функций, 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, как показано на следующем снимке экрана.

Окно сообщений в VBA

Шаг 2 — Отображается окно простого сообщения с сообщением «Добро пожаловать» и кнопкой «ОК»

Окно сообщений в VBA

Шаг 3 — После нажатия OK, появляется еще одно диалоговое окно с сообщением вместе с кнопками «да, нет и отмена».

Окно сообщений в VBA

Шаг 4 — После нажатия кнопки «Нет» значение этой кнопки (7) сохраняется в виде целого числа и отображается пользователю в виде окна сообщения, как показано на следующем снимке экрана. Используя это значение, можно понять, на какую кнопку нажал пользователь.

Окно сообщений в VBA

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», чтобы продемонстрировать использование переменных.

vba_02.jpg

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_03.jpg

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_05.jpg

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

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

Вывод области, как показано ниже, будет отображаться пользователю.

Принятие решений в VBA

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

Теперь вы сможете вызывать только функцию, но не подпроцедуру, как показано на следующем снимке экрана.

Подпроцедура в VBA

Площадь рассчитывается и отображается только в окне сообщения.

Рассчитать площадь Sub 2 в VBA

В ячейке результата отображается НОЛЬ, так как значение области НЕ возвращается из функции. Короче говоря, вы не можете сделать прямой вызов подпроцедуры из листа Excel.

Рассчитать площадь Sub 3 в VBA

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. Чтобы сделать то же самое, перейдите в Инструменты → Ссылки, как показано на следующем снимке экрана.

Excel FSO в VBScript

Шаг 2. Добавьте «Microsoft Scripting RunTime» и нажмите «ОК».

Excel FSO в VBScript

Шаг 3 — Добавьте данные, которые вы хотели бы записать в текстовый файл, и добавьте командную кнопку.

Excel FSO в VBScript

Шаг 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».

Excel FSO в VBScript

Содержимое файла показано на следующем снимке экрана.

Excel FSO в VBScript

Написать команду

В отличие от 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», как показано на следующем снимке экрана.

Excel FSO в VBScript

Содержимое файла показано на следующем снимке экрана.

Excel FSO в VBScript

VBA — Графики программирования

Используя VBA, вы можете создавать графики на основе определенных критериев. Давайте посмотрим на это на примере.

Шаг 1 — Введите данные, по которым должен быть сгенерирован график.

График в VBA

Шаг 2 — Создайте 3 кнопки — одну для создания гистограммы, другую для создания круговой диаграммы и другую для создания столбчатой ​​диаграммы.

График в VBA

Шаг 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

VBA — формы пользователя

Форма пользователя — это настраиваемое диалоговое окно, которое делает ввод пользовательских данных более управляемым и более простым в использовании для пользователя. В этой главе вы научитесь разрабатывать простую форму и добавлять данные в Excel.

Шаг 1 — Перейдите к окну VBA, нажав Alt + F11 и перейдите к меню «Вставить» и выберите «Форма пользователя». После выбора форма пользователя отображается, как показано на следующем снимке экрана.

Заявления о принятии решений в VBScript

Шаг 2 — Разработка форм с использованием заданных элементов управления.

Заявления о принятии решений в VBScript

Шаг 3 — После добавления каждого элемента управления, элементы управления должны быть названы. Заголовок соответствует тому, что отображается в форме, а имя соответствует логическому имени, которое будет появляться при написании кода VBA для этого элемента.

Заявления о принятии решений в VBScript

Шаг 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 — Добавьте код для события загрузки формы, выполнив щелчок правой кнопкой мыши на форме и выбрав «Просмотреть код».

Заявления о принятии решений в VBScript

Шаг 6 — Выберите «Userform» из выпадающего списка объектов и выберите метод «Initialize», как показано на следующем снимке экрана.

Заявления о принятии решений в VBScript

Шаг 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 — Заполните форму, нажав кнопку «Выполнить». Введите значения в форму и нажмите кнопку «Отправить». Автоматически значения будут перетекать в лист, как показано на следующем снимке экрана.