где необходимо писать vba код
VBA Excel. Начинаем программировать с нуля
Первое знакомство с редактором VBA Excel, создание процедур (подпрограмм) и написание простейшего кода, работающего с переменными и ячейками рабочего листа.
Начинаем программировать с нуля
Часть 1. Первая программа
[Часть 1] [Часть 2] [Часть 3] [Часть 4]
Знакомство с редактором VBA
В левой части редактора VBA расположен проводник проекта, в котором отображены все открытые книги Excel. Верхней строки, как на изображении, у вас скорее всего не будет, так как это – личная книга макросов. Справа расположен модуль, в который записываются процедуры (подпрограммы) с кодом VBA. На изображении открыт модуль листа, мы же далее создадим стандартный программный модуль.
После нажатия кнопки «Module» вы увидите ссылку на него, появившуюся в проводнике слева.
Первая программа на VBA Excel
Добавляем на стандартный модуль шаблон процедуры – строки ее начала и завершения, между которыми мы и будем писать свою первую программу (процедуру, подпрограмму).
В результате откроется окно добавления шаблона процедуры (Sub).
Имя процедуры может быть написано как на латинице, так и на кириллице, может содержать цифры и знак подчеркивания. Оно обязательно должно начинаться с буквы и не содержать пробелы, вместо которых следует использовать знак подчеркивания.
Функция MsgBox выводит информационное сообщение с указанным текстом. В нашем примере – это «Привет».
Если вы увидели такое сообщение, как на изображении, то, поздравляю – вы написали свою первую программу!
Работа с переменными
Чтобы использовать в процедуре переменные, их необходимо объявить с помощью ключевого слова «Dim». Если при объявлении переменных не указать типы данных, они смогут принимать любые доступные в VBA Excel значения. Комментарии в тексте процедур начинаются со знака «’» (апостроф).
Пример 2
Присвоение переменным числовых значений:
Код VBA
Код Excel VBA
Код VBA можно определить как код, который вводится в окне Visual Basic для выполнения набора инструкций или действий в Excel и предоставления результатов. С помощью кода VBA мы можем сократить время на выполнение повторяющейся задачи, не требуется большого вмешательства человека, кроме как для запуска программы. Теперь мы увидим, как открыть окно Visual Basic, как написать в нем код, как запустить и как его сохранить.
Как открыть окно Visual Basic?
Если вы хотите написать код Visual Basic, мы должны написать его в окне Visual Basic. Вопрос здесь в том, где находится окно Visual Basic в Excel и как его открыть. Ответ заключается в выборе меню « Разработчик» и в меню разработчика выберите « Visual Basic», как показано на рисунке ниже.
Который откроет пустое окно, как показано ниже.
Легко и круто выглядит правильно. Но если Excel не имеет вкладки разработчика. Нам нужно добавить вкладку разработчика с помощью следующих шагов.
Шаг 2: Появится раскрывающийся список, нажмите на вкладку « Параметры ».
Шаг 4: Когда мы перетаскиваем параметры настройки ленты, мы находим параметр для разработчика (Custom), нам нужно установить этот флажок, который позволит нам использовать VBA в Excel.
Где написать код в Excel VBA?
Если мы добавим несколько листов в нашу книгу, это позволит использовать разные модули листов.
Код модуля листа: независимо от того, какой код события мы напишем в модуле листа, он будет применяться только к этому листу.
Вы можете быть в замешательстве, что такое код события. VBA поставляется с несколькими событиями, показанными на скриншоте выше, такими как изменение, деактивация и многое другое. Всякий раз, когда это событие произошло, макрос будет запускаться.
Модуль ThisWorkbook
Какой бы код не был написан в этом модуле, он будет применяться ко всем листам в рабочей книге. Предположим, что если мы напишем код события для рабочей книги, то всякий раз, когда это событие происходит на каком-либо из листов рабочей книги, будет выполняться макрос. Предположим, что если мы напишем событие для «Новый лист», то всякий раз, когда мы создаем новый лист, для этой книги будет запускаться макрос.
Модуль: Обычно мы будем писать код в модулях на VBA. Нам нужно вставить модуль, щелкнув по меню «Вставка» и выбрав опцию модуля, чтобы вставить модуль.
Точно так же мы можем вставить модуль класса и форму пользователя также. Это модули, в которые мы можем написать наш код. В зависимости от типа требования мы должны выбрать модуль и написать в нем код.
Примеры написания и запуска кода в Excel VBA
Ниже приведены различные примеры написания и запуска кода с использованием кода VBA в Excel.
Теперь мы увидим пример макрокода с использованием обычного модуля. Когда мы вставим новый модуль, пустое окно будет выглядеть так, как показано ниже.
Выполните следующие шаги, чтобы написать код в Excel VBA.
Шаг 1: Любая программа в VBA начинается с дополнительного ключевого слова и имени программы с открытыми и закрытыми скобками, как показано ниже. Когда мы введем после скобок автоматически появится «End Sub».
Шаг 2: между ними мы должны написать наш код.
Шаг 3: Мы можем запустить код, нажав F5 или щелкнув по кнопке запуска вверху, которая отмечена черным цветом.
Шаг 4: Как только мы нажмем на запуск, всплывающее окно попросит выполнить запуск, как показано ниже. Если доступно несколько макросов, необходимо выбрать правильный макрос и нажать кнопку запуска.
Шаг 5: перейдите в Excel и проверьте, появляются ли результаты, как показано ниже.
Если мы хотим запустить макрос из самого листа с помощью фигуры, мы можем это сделать. Выполните следующие шаги, чтобы назначить макрос фигурам.
Шаг 1: Перейдите на «Вставка» и выберите фигуру по вашему желанию.
Шаг 2: После выбора формы нарисуйте это на своем рабочем листе.
Шаг 3: Теперь мы можем написать текст, например, «нажмите здесь» или «запустить макрос» в этой форме. Для добавления текста просто щелкните правой кнопкой мыши на фигуре и выберите Редактировать текст
Шаг 4: Добавьте слово согласно вашему желанию. Я добавил слово « Run Macro ».
Шаг 5: Теперь нам нужно назначить макрос для этой фигуры, для этого выберите фигуру, щелкните правой кнопкой мыши и выберите « Назначить макрос ».
Шаг 6: появится всплывающее окно с запросом выбора макроса. Выберите имя макроса и нажмите кнопку ОК.
Шаг 7: Теперь, если мы нажмем на форму, макрос запустится и выдаст результат, как показано ниже.
Как сохранить макрокоманду?
Мы все знаем, как сохранить рабочую книгу. Сохранение макроса также не изменилось, но есть одно небольшое изменение. У нас есть два разных способа сохранить наши макро-файлы.
Когда вы сохраняете книгу, нам нужно выбрать тип файла из списка параметров типа файла, как показано ниже.
По умолчанию мы можем использовать « книгу с макросами Excel ». В случае, если вы хотите использовать в качестве стандартного файла в качестве отправной точки для других файлов, используйте формат «Шаблон макросов Excel».
То, что нужно запомнить
Рекомендуемые статьи
Это руководство по VBA Code в Excel. Здесь мы узнаем, как копировать, вставлять и запускать код VBA в Excel вместе с простыми и практичными примерами. Ниже приведены несколько полезных статей о Excel, связанных с VBA.
Автоматизация рутины в Microsoft Excel при помощи VBA
В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.
VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.
Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.
Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.
Поэтому, увы, будем учить Visual Basic.
Чуть-чуть подготовки и постановка задачи
Итак, поехали. Открываем Excel.
Для начала давайте добавим в Ribbon панель «Разработчик». В ней находятся кнопки, текстовые поля и пр. элементы для конструирования форм.
Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):
То есть требуется, чтобы было как минимум две группы, по которым можно объединить товары (в нашем случае это будут Тип и Производитель — в таком порядке). Для того, чтобы предложенный мною алгоритм работал корректно, отсортируйте товары так, чтобы товары из одной группы стояли подряд (сначала по Типу, потом по Производителю).
Результат, которого хотим добиться, выглядит примерно так:
Разумеется, если смотреть прайс только на компьютере, то можно добавить фильтры и будет гораздо удобнее искать нужный товар. Однако мы хотим научится кодить и задача вполне подходящая, не так ли?
Кодим
Для начала требуется создать кнопку, при нажатии на которую будет вызываться наша програма. Кнопки находятся в панели «Разработчик» и появляются по кнопке «Вставить». Вам нужен компонент формы «Кнопка». Нажали, поставили на любое место в листе. Далее, если не появилось окно назначения макроса, надо нажать правой кнопкой и выбрать пункт «Назначить макрос». Назовём его FormatPrice. Важно, чтобы перед именем макроса ничего не было — иначе он создастся в отдельном модуле, а не в пространстве имен книги. В этому случае вам будет недоступно быстрое обращение к выделенному листу. Нажимаем кнопку «Новый».
И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/«View code».
Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:
Напишем Hello World:
Sub FormatPrice()
MsgBox «Hello World!»
End Sub
И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.
Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.
Примеры синтаксиса
Dim res As sTRING ‘ Регистр в VB не важен. Впрочем, редактор Вас поправит
Dim i As Integer
‘ Цикл всегда состоит из нескольких строк
For i = 1 To 10
res = res + CStr(i) ‘ Конвертация чего угодно в String
If i = 5 Then Exit For
Next i
Dim x As Double
x = Val( «1.234» ) ‘ Парсинг чисел
x = x + 10
MsgBox x
On Error GoTo Err ‘ При ошибке перейти к метке Err
x = 5 / 0
MsgBox «OK!»
GoTo ne
ne:
On Error GoTo 0 ‘ Отключаем обработку ошибок
‘ Циклы бывает, какие захотите
Do While True
Exit Do
Loop ‘While True
Do ‘Until False
Exit Do
Loop Until False
‘ А вот при вызове функций, от которых хотим получить значение, скобки нужны.
‘ Val также умеет возвращать Integer
Select Case LengthSqr(Len( «abc» ), Val( «4» ))
Case 24
MsgBox «0»
Case 25
MsgBox «1»
Case 26
MsgBox «2»
End Select
Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.
Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.
Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.
Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.
Надеюсь, что этого Вам хватит, чтобы не пугаться кода и самостоятельно написать какое-нибудь домашнее задание по информатике. По ходу поста я буду ненавязчиво знакомить Вас с новыми конструкциями.
Кодим много и под Excel
В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.
Sub FormatPrice()
Sheets( «result» ).Cells.Clear
Sheets( «data» ).Activate
End Sub
Работа с диапазонами ячеек
Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.
Примеры работы с Range
Sheets( «result» ).Activate
Dim r As Range
Set r = Range( «A1» )
r.Value = «123»
Set r = Range( «A3,A5» )
r.Font.Color = vbRed
r.Value = «456»
Set r = Range( «A6:A7» )
r.Value = «=A1+A3»
Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:
Для упрощения работы рекомендую определить следующие функции-сокращения:
Function GetCol(Col As Integer ) As String
GetCol = Chr(Asc( «A» ) + Col)
End Function
Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».
Глобальные переменные
Option Explicit ‘ про эту строчку я уже рассказывал
Dim CurRow As Integer
Const GroupsCount As Integer = 2
Const DataCount As Integer = 3
FormatPrice
Sub FormatPrice()
Dim I As Integer ‘ строка в data
CurRow = 1
Dim Groups(1 To GroupsCount) As String
Dim PrGroups(1 To GroupsCount) As String
Теперь надо заполнить массив Groups:
На месте многоточия
И создать заголовки:
На месте многоточия в предыдущем куске
For I2 = 1 To GroupsCount
If Groups(I2) <> PrGroups(I2) Then
Dim I3 As Integer
For I3 = I2 To GroupsCount
AddHeader I3, Groups(I3)
Next I3
Exit For
End If
Next I2
Не забудем про процедуру AddHeader:
Перед FormatPrice
Теперь надо перенести всякую информацию в result
Подогнать столбцы по ширине и выбрать лист result для показа результата
После цикла в конце FormatPrice
Sheets( «Result» ).Activate
Columns.AutoFit
Всё. Можно любоваться первой версией.
Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:
Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:
Поэтому чуть-чуть меняем код с добавлением стиля границ:
Select Case Ty
Case 1 ‘ Тип
.Font.Bold = True
.Font.Size = 16
.Borders(xlTop).Weight = xlThick
Case 2 ‘ Производитель
.Font.Size = 12
.Borders(xlTop).Weight = xlMedium
End Select
.Borders(xlBottom).Weight = xlMedium ‘ По убыванию: xlThick, xlMedium, xlThin, xlHairline
End With
CurRow = CurRow + 1
End Sub
Осталось лишь добится пропусков перед началом новой группы. Это легко:
В начале FormatPrice
Dim I As Integer ‘ строка в data
CurRow = 0 ‘ чтобы не было пропуска в самом начале
Dim Groups(1 To GroupsCount) As String
В цикле расстановки заголовков
If Groups(I2) <> PrGroups(I2) Then
CurRow = CurRow + 1
Dim I3 As Integer
В точности то, что и хотели.
Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка: CurRow = 0 CurRow = 1.
Файл можно скачать тут (min.us) или тут (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.
Спасибо за внимание.
Буду рад конструктивной критике в комментариях.
UPD: Перезалил пример на Dropbox и min.us.
UPD2: На самом деле, при вызове процедуры с одним параметром скобки можно поставить. Либо использовать конструкцию Call Foo(«bar», 1, 2, 3) — тут скобки нужны постоянно.
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 — Начните кодирование, просто добавив сообщение.
Шаг 10 — Нажмите кнопку, чтобы выполнить подпроцедуру. Вывод подпроцедуры показан на следующем снимке экрана.
Примечание. В следующих главах мы продемонстрируем использование простой кнопки, как описано в шагах с 1 по 10. Следовательно, важно тщательно понять эту главу.
VBA — Excel Условия
В этой главе вы познакомитесь с обычно используемой терминологией Excel VBA. Эти термины будут использоваться в следующих модулях, поэтому важно понимать каждый из них.
Модули
Модули — это область, где написан код. Это новая рабочая тетрадь, поэтому никаких модулей нет.
Чтобы вставить модуль, перейдите к Вставка → Модуль. Как только модуль вставлен, «module1» будет создан.
Внутри модулей мы можем написать код VBA, а код написан в процедуре. Процедура / подпроцедура — это серия утверждений VBA, в которых указывается, что делать.
Процедура
Процедуры — это группа операторов, выполняемых как единое целое, которые инструктируют Excel, как выполнять определенную задачу. Выполняемая задача может быть очень простой или очень сложной задачей. Однако рекомендуется разбивать сложные процедуры на более мелкие.
Двумя основными типами процедур являются Sub и Function.
функция
Функция — это группа многократно используемого кода, которую можно вызывать в любом месте вашей программы. Это устраняет необходимость писать один и тот же код снова и снова. Это помогает программистам разделить большую программу на ряд небольших и управляемых функций.
Подпроцедур
VBA — Макро Комментарии
Комментарии используются для документирования логики программы и пользовательской информации, с которой другие программисты могут беспрепятственно работать над тем же кодом в будущем.
Он включает в себя информацию, такую как разработанную, модифицированную, и может также включать встроенную логику. Комментарии игнорируются интерпретатором при исполнении.
Комментарии в VBA обозначаются двумя способами.
Любое утверждение, начинающееся с одинарной кавычки (‘), рассматривается как комментарий. Ниже приведен пример.
Любое утверждение, начинающееся с одинарной кавычки (‘), рассматривается как комментарий. Ниже приведен пример.
Любое утверждение, которое начинается с ключевого слова «REM». Ниже приведен пример.
Любое утверждение, которое начинается с ключевого слова «REM». Ниже приведен пример.
VBA — Окно сообщений
Функция MsgBox отображает окно сообщения и ждет, когда пользователь нажмет кнопку, а затем действие будет выполнено на основе кнопки, нажатой пользователем.
Синтаксис
Описание параметра
Подсказка — Обязательный параметр. Строка, которая отображается в виде сообщения в диалоговом окне. Максимальная длина подсказки составляет около 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. Указанную выше функцию можно выполнить, нажав кнопку «Выполнить» в окне VBA или вызвав функцию из рабочего листа Excel, как показано на следующем снимке экрана.
Шаг 2 — Отображается окно простого сообщения с сообщением «Добро пожаловать» и кнопкой «ОК»
Шаг 3 — После нажатия OK, появляется еще одно диалоговое окно с сообщением вместе с кнопками «да, нет и отмена».
Шаг 4 — После нажатия кнопки «Нет» значение этой кнопки (7) сохраняется в виде целого числа и отображается пользователю в виде окна сообщения, как показано на следующем снимке экрана. Используя это значение, можно понять, на какую кнопку нажал пользователь.
VBA — InputBox
Функция InputBox предлагает пользователям ввести значения. После ввода значений, если пользователь нажимает кнопку OK или нажимает клавишу ВВОД на клавиатуре, функция InputBox возвращает текст в текстовое поле. Если пользователь нажмет кнопку «Отмена», функция вернет пустую строку («»).
Синтаксис
Описание параметра
Подсказка — обязательный параметр. Строка, которая отображается в виде сообщения в диалоговом окне. Максимальная длина подсказки составляет около 1024 символов. Если сообщение распространяется более чем на строку, то строки могут быть разделены с помощью символа возврата каретки (Chr (13)) или символа перевода строки (Chr (10)) между каждой строкой.
Заголовок — необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.
По умолчанию — необязательный параметр. Текст по умолчанию в текстовом поле, который пользователь хотел бы отобразить.
XPos — необязательный параметр. Положение оси X представляет быстрое расстояние от левой стороны экрана по горизонтали. Если оставить это поле пустым, поле ввода будет горизонтально отцентрировано.
YPos — необязательный параметр. Положение оси Y представляет быстрое расстояние от левой стороны экрана по вертикали. Если оставить это поле пустым, поле ввода будет центрировано вертикально.
Helpfile — необязательный параметр. Строковое выражение, определяющее файл справки, который будет использоваться для предоставления контекстно-зависимой справки для диалогового окна.
контекст — необязательный параметр. Числовое выражение, обозначающее номер контекста справки, назначенный автором справки для соответствующего раздела справки. Если предоставляется контекст, также должен быть предоставлен файл справки.
Подсказка — обязательный параметр. Строка, которая отображается в виде сообщения в диалоговом окне. Максимальная длина подсказки составляет около 1024 символов. Если сообщение распространяется более чем на строку, то строки могут быть разделены с помощью символа возврата каретки (Chr (13)) или символа перевода строки (Chr (10)) между каждой строкой.
Заголовок — необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.
По умолчанию — необязательный параметр. Текст по умолчанию в текстовом поле, который пользователь хотел бы отобразить.
XPos — необязательный параметр. Положение оси X представляет быстрое расстояние от левой стороны экрана по горизонтали. Если оставить это поле пустым, поле ввода будет горизонтально отцентрировано.
YPos — необязательный параметр. Положение оси Y представляет быстрое расстояние от левой стороны экрана по вертикали. Если оставить это поле пустым, поле ввода будет центрировано вертикально.
Helpfile — необязательный параметр. Строковое выражение, определяющее файл справки, который будет использоваться для предоставления контекстно-зависимой справки для диалогового окна.
контекст — необязательный параметр. Числовое выражение, обозначающее номер контекста справки, назначенный автором справки для соответствующего раздела справки. Если предоставляется контекст, также должен быть предоставлен файл справки.
пример
Давайте вычислим площадь прямоугольника путем получения значений от пользователя во время выполнения с помощью двух полей ввода (одно для длины и одно для ширины).
Выход
Шаг 1 — Чтобы выполнить то же самое, позвоните, используя имя функции, и нажмите Enter, как показано на следующем снимке экрана.
Шаг 2 — После выполнения отображается первое поле ввода (длина). Введите значение в поле ввода.
Шаг 3 — После ввода первого значения отображается второе поле ввода (ширина).
Шаг 4 — После ввода второго числа нажмите кнопку ОК. Область отображается, как показано на следующем снимке экрана.
VBA — Переменные
Переменная — это именованная ячейка памяти, используемая для хранения значения, которое можно изменить во время выполнения скрипта. Ниже приведены основные правила именования переменных.
Вы должны использовать букву в качестве первого символа.
Длина имени не может превышать 255 символов.
Вы не можете использовать зарезервированные ключевые слова Visual Basic в качестве имени переменной.
Вы должны использовать букву в качестве первого символа.
Длина имени не может превышать 255 символов.
Вы не можете использовать зарезервированные ключевые слова Visual Basic в качестве имени переменной.
В VBA вам необходимо объявить переменные перед их использованием.
Типы данных
Существует много типов данных VBA, которые можно разделить на две основные категории, а именно числовые и нечисловые типы данных.
Числовые типы данных
В следующей таблице приведены числовые типы данных и допустимый диапазон значений.
От 1.401298E-45 до 3.402823E + 38 для положительных значений.
4.94065645841247E-324 до 1.79769313486232e + 308 для положительных значений.
+/- 79,228,162,514,264,337,593,543,950,335, если не используется десятичная дробь
+/- 7,9228162514264337593543950335 (28 знаков после запятой).
От 1.401298E-45 до 3.402823E + 38 для положительных значений.
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 — Константы
Константа — это именованная область памяти, используемая для хранения значения, которое НЕ МОЖЕТ быть изменено во время выполнения скрипта. Если пользователь пытается изменить значение константы, выполнение скрипта заканчивается ошибкой. Константы объявляются так же, как и переменные.
Ниже приведены правила именования констант.
Вы должны использовать букву в качестве первого символа.
Длина имени не может превышать 255 символов.
Вы не можете использовать зарезервированные ключевые слова Visual Basic в качестве имени переменной.
Вы должны использовать букву в качестве первого символа.
Длина имени не может превышать 255 символов.
Вы не можете использовать зарезервированные ключевые слова Visual Basic в качестве имени переменной.
Синтаксис
В VBA нам нужно присвоить значение объявленным константам. Выдается ошибка, если мы пытаемся изменить значение константы.
пример
Давайте создадим кнопку «Constant_demo», чтобы продемонстрировать, как работать с константами.
Выход
После выполнения сценария выходные данные будут отображаться, как показано на следующем снимке экрана.
VBA — Операторы
Арифматические операторы
Следующие арифметические операторы поддерживаются VBA.
Предположим, что переменная A содержит 5, а переменная B содержит 10, тогда —
Операторы сравнения
В VBA поддерживаются следующие операторы сравнения.
Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда —
оператор | Описание | пример |
---|---|---|
знак равно | Проверяет, равны ли значения двух операндов или нет. Если да, то условие верно. | (A = B) является ложным. |
<> | Проверяет, равны ли значения двух операндов или нет. Если значения не равны, то условие выполняется. | (A <> B) верно. |
> | Проверяет, больше ли значение левого операнда, чем значение правого операнда. Если да, то условие верно. | (A> B) является ложным. |
Проверяет, меньше ли значение левого операнда, чем значение правого операнда. Если да, то условие верно. | (A | |
> = | Проверяет, больше ли значение левого операнда или равно значению правого операнда. Если да, то условие верно. | (A> = B) является ложным. |
Проверяет, меньше ли значение левого операнда или равно значению правого операнда. Если да, то условие верно. | (A |
Логические операторы
Следующие логические операторы поддерживаются 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 состоит из логического выражения, за которым следует один или несколько операторов. Оператор switch позволяет проверять переменную на соответствие списку значений. Оператор if состоит из логического выражения, за которым следует один или несколько операторов. Оператор switch позволяет проверять переменную на соответствие списку значений. VBA — ПетлиМожет возникнуть ситуация, когда вам нужно выполнить блок кода несколько раз. В общем случае операторы выполняются последовательно: первый оператор в функции выполняется первым, затем второй и так далее. Языки программирования предоставляют различные управляющие структуры, которые допускают более сложные пути выполнения. Оператор цикла позволяет нам выполнять оператор или группу операторов несколько раз. Ниже приводится общая форма оператора цикла в VBA. VBA предоставляет следующие типы циклов для обработки требований циклов. Нажмите на следующие ссылки, чтобы проверить их детали.
|