Операторы vba excel
Организация ввода и вывода сообщений
Подобно многим языкам программирования Visual Basic for Application (VBA) позволяет создать три типа процедур: Sub, Function, Property.
Процедура – это набор описаний и инструкций, сгруппированных для выполнения.
Процедура Sub – набор команд, с помощью которого можно решить определенную задачу. При ее запуске выполняются команды процедуры, а затем управление передается в приложение или процедуру, которая вызвала процедуру Sub. Записываемые макросы автоматически описываются как процедуры Sub, любой макрос или другой код VBA, который просто выполняет определенный набор действий, используя приложения Office, и обычно является процедурой Sub.
Процедура Function (или функция) также представляет собой набор команд, который решает определенную задачу. Различия заключается в том, что процедуры данного типа обязательно возвращают значение. При создании процедуры Function можно описать тип данных, который возвращает функция. Функции обычно используются при выполнении вычислений, операциями с текстом, либо возвращают логические значения.
Процедура Property используется для ссылки на свойство объекта. Данный тип процедур применяется для установки или получения значения пользовательских свойств форм и модулей. Процедуры облегчают хранение и применение информации, если использовать их сначала для сохранения в свойстве этой информации, а затем для ее чтения.
Структура процедуры
При записи процедуры требуется соблюдать правила ее описания. Упрощенный синтаксис для процедур Sub является следующим:
Синтаксис описания функций очень похож на синтаксис описания процедуры Sub, однако, имеются некоторые отличия:
Использование операторов
Процедуры состоят из операторов – наименьших единиц программного кода. Как правило, операторы занимают по одной строке программного кода, и в каждой строке обычно содержится только один оператор, но это не обязательно. В VBA имеется четыре типа операторов: объявления, операторы присваивания, выполняемые операторы и параметры компилятора.
Объявления
Объявление – это оператор, сообщающий компилятору VBA о намерениях по поводу использования в программе именованного объекта (переменной, константы, пользовательского типа данных или процедуры). Кроме того, объявление задает тип объекта и обеспечивает компилятору дополнительную информацию о том, как использовать данный объект. Объявив объект, можно использовать его в любом месте программы.
Переменные – это именованные значения, которые могут изменяться во время выполнения программы.
Рассмотрим пример объявления переменной.
С помощью оператора Dim объявляется переменная с именем МоеЛюбимоеЧисло и объявляется, что значение, которое она будет содержать, должно быть целым:
Константы представляют собой именованные значения, которые не меняются.
Оператор Constant создает строковую константу (текст) с именем НеизменныйТекст, представляющую собой набор символов Вечность:
Оператором Type объявляется пользовательский тип данных с именем Самоделкин, определяя его как структуру, включающую строковую переменную с именем Имя и переменную типа Date с именем ДеньРождения. В данном случае объявление займет несколько строк:
Объявление Private создает процедуру типа Sub с именем СкрытаяПроцедура, говоря о том, что эта процедура является локальной в смысле области видимости. Завершающий процедуру оператор End Sub считается частью объявления.
Оператор присваивания
Оператор присваивания = приписывают переменным или свойствам объектов конкретные значения. Такой оператор всегда состоят из трех частей: имени переменной, или свойства, знака равенства и выражения, задающего нужное значение.
Оператор = присваивает переменной МоеЛюбимоеЧисло значение суммы переменной ДругоеЧисло и числа 12.
В следующей строке кода, записывается, что свойству Color (Цвет) объекта AGraphicShape присваивается значение Blue (Синий) в предположении, что Blue является именованной константой:
В следующеей строке, чтобы задать значение переменной КвадратныйКорень, для текущего значения переменной МоеЛюбимоеЧисло вызывается функция Sqr — встроенная функция VBA вычисления квадратного корня:
В VBA выражением называется любой фрагмент программного кода, задающий некоторое числовое значение, строку текста или объект. Выражение может содержать любую комбинацию чисел или символов, констант, переменных, свойств объектов, встроенных функций и процедур типа Function, связанных между собой знаками операции (например, + или *). Несколько примеров выражений:
Операторы VBA
Программа на VBA – это последовательность операторов.
При составлении программ следует придерживаться ряда соглашений. Так, на одной строке можно разместить несколько операторов. Между операторами в одной строке ставится двоеточие.
Любую строку можно разбить на две, расположив в конце первой знаки символов «Пробел» + «Знак подчеркивания» ( _), в этом случае вторая строка будет считаться продолжением первой.
Для того, чтобы сделать программу легко читаемой используют комментарии. В языке VBA существуют два способа ввода комментариев: применение апострофа (‘), который можно поставить в любом месте строки, и зарезервированное слово Rem вместо апострофа.
1. Оператор Dimпредназначен для объявления типов переменных.
1. Dim A As Integer – переменная A объявляется как целое, т.е. в ней будут храниться только целые величины.
2. Dim D As Date – объявляется переменная D для хранения дат.
3. Dim Фамилия, Наименование As String – объявлютсяпеременные. Фамилия и Наименование, предназначеные для хранения текста.
4. Dim B(12) As Integer – объявляется одномерный массив (вектор), состоящий из 12 целых чисел, причем по умолчанию первый элемент массива будет B(0), а последний B(12).
5. Dim B(3,3) As Single – объявляется двумерный массив 3х3 (матрица), состоящий из действительных чисел.
Если не указан тип переменной, то по умолчанию используется тип Variant. Однако указание конкретного типа переменной делает программу надежнее и убыстряет ее работу, т.к. VBA не требуется тратить время на распознавание необъявленной переменной при каждом обращении к ней.
Если размер массива M заранее не известен и определяется в ходе программы, то при описании массива число элементов не указывается, и массив определяется так:
Dim M() As Integer
После определения числа элементов массива, например, N, необходимо записать оператор
2. Оператор присваивания предназначен для присваивания переменной какого-либо значения.
Переменная (или свойство объекта) = выражение.
1. а=5 – переменной А присвоить значение 5;
2. b=«Менеджер» – переменной b присвоить значение «Менеджер»;
· Адрес=Sheets(«Организации»).Cells(2,2) – переменной Адрес присвоить содержимое ячейки B2, которая находится на листе Организации в текущей рабочей книге;
· Фамилия=UserForm1.TextBox1.Text – переменнойФамилия присвоить содержимое поля TextBox1 пользовательской формы UserForm1.
o Оператор With/End withизбавляет программиста от большого количества повторений имени одного и того же объекта.
Например, вместо последовательности операторов
Visual Basic for Application.
Краткие теоретические сведения
1. Синтаксис и семантика языка программирования VBA
Синтаксис языка программирования — набор правил, описывающий комбинации символов алфавита, считающиеся правильно структурированной программой (документом) или её фрагментом.
Основные синтаксические принципы этого языка следующие:
- VBA нечувствителен к регистру;
- чтобы закомментировать код до конца строки, используется одинарная кавычка (‘) или команда REM;
- символьные значения должны заключаться в двойные кавычки («);
- максимальная длина любого имени в VBA (переменные, константы, процедуры) — 255 символов;
- начало нового оператора — перевод на новую строку (точка с запятой, как в C, Java, JavaScript, для этого не используется);
- ограничений на максимальную длину строки нет (хотя в редакторе в строке помещается только 308 символов). Несколько операторов в одной строке разделяются двоеточиями:
MsgBox «Проверка 1» : MsgBox «Проверка 2» - для удобства чтения можно объединить несколько физических строк в одну логическую при помощи пробела и знака подчеркивания после него:
MsgBox «Сообщение пользователю» _
& vUserName
Семантика языка — это смысловое значение слов. В программировании — начальное смысловое значение операторов, основных конструкций языка и т. п.
Оператор — это наименьшая способная выполняться единица кода VBA. Оператор может объявлять или определять переменную, устанавливать параметр компилятора VBA или выполнять какое-либо действие в программе.
Арифметических операторов в VBA всего 7.
Четыре стандартных: сложение (+), вычитание (−), умножение (*), деление (/), и еще три:
- возведение в степень (^). Например, 2^3 = 8;
- целочисленное деление (). Делит первое число на второе, отбрасывая (не округляя) дробную часть. Например, 52 = 2;
- деление по модулю (Mod). Делит первое число на второе, возвращая только остаток от деления. Например, 5 Mod 2 = 1.
Оператор присваивания в VBA — это знак равенства. Можно записывать так:
Здесь не путайте знак равенства с оператором равенства. Последнее выражение означает «присвоить переменной nVar значение 10», а если строка выглядит так: If (nVar = 10) , то это значит «если значение переменной nVar равно 10».
Операторов сравнения в VBA всего 8:
- равенство (=). Например, If (nVar = 10);
- больше, чем (>) и меньше, чем ( 10);
- больше или равно (>=) и меньше или равно ( = 10);
- не равно (<>). Например, If (nVar<>10);
- сравнение объектов (Is). Определяет, ссылаются объектные переменные на один и тот же объект или на разные. Например, If (obj1 is obj2);
- подобие (Like). Сравнивает строковый объект с шаблоном и определяет, подходит ли шаблон.
Операторы сравнения всегда возвращают True (если утверждение истинно) или False (если утверждение ложно).
Очень часто при проверке нескольких условий используются логические операторы:
- And — логическое И. Должны быть истинными оба условия;
- Or — логическое ИЛИ. Должно быть истинным хотя бы одно из условий;
- Not — логическое отрицание. Возвращает True, если условие ложно;
- Xor — логическое исключение. В выражении E1 Xor E2 возвращает True, если только E1 = True или только E2 = True, иначе — False;
- Eqv — эквивалентность двух выражений, возвращает True, если они имеют одинаковое значение;
- Imp — импликация, E1 Imp E2 возвращает False, если E1 = True и E2 = False, иначе — True.
Помнить нужно про And, Or, Not, остальные логические операторы используются редко.
Переменные — это контейнеры для хранения изменяемых данных. Без них не обходится практически ни одна программа. Для простоты переменную можно сравнить с номерком в гардеробе — вы сдаете в гардероб какие-то данные, в ответ вам выдается номерок. Когда вам опять потребовались эти данные, вы «предъявляете номерок» и получаете их.
Каждая переменная имеет имя. Обращение к переменной происходит по имени. Правила выбора имен в VBA едины для многих элементов (переменные, константы, функции, процедуры и т. п.):
- имя должно начинаться с буквы;
- не должно содержать пробелов и символов пунктуации (исключение — символ подчеркивания);
- максимальная длина — 255 символов;
- должно быть уникальным в текущей области видимости
- зарезервированные слова (те, которые подсвечиваются синим цветом в окне редактора кода) использовать нельзя.
При создании программ VBA рекомендуется определиться с правилами, по которым будут присваиваться имена объектам — соглашение об именовании. Чаще всего используется так называемое венгерское соглашение (в честь одного из программистов Microsoft, Charles Simonyi, венгра по национальности):
- имя переменной должно начинаться с префикса, записанного строчными буквами. Префикс указывает, что именно будет храниться в этой переменной:
• str (или s) — String, символьное значение;
• fn (или f) — функция;
• sub — процедура;
• c (или все буквы имени заглавные) — константа (контейнер для хранения данных, которые, в отличие от переменных, не изменяются в ходе выполнения VBA-программы);
• b — Boolean, логическое значение (True или False);
• d — дата;
• obj (или o) — ссылка на объект;
• n — числовое значение; - имена функций, методов и каждое слово в составном слове должно начинаться с заглавной буквы:
MsgBox objMyDocument.Name
Sub CheckDateSub()
Тип данных относят к самым фундаментальным понятиям любого языка программирования. Тип данных определяет множество допустимых значений, которое может принимать величина (переменная или константа), и множество действий, которые можно выполнить с этой величиной.
2. Основные типы данных VBA
В VBA предусмотрены следующие типы данных:
- числовые:
• Byte — целое число от 0 до 255, для хранения нужен 1 байт памяти;
• Integer — целое число от −32 768 до 32 767, 2 байта;
• Long — большое целое число от −2 147 483 648 до 2 147 483 647, 4 байта;
• Currency (денежный) — большое десятичное число с 19 позициями, включая 4 позиции после запятой
(от –922337203685477,5808 до 922337203685477,5807), 4 байта,
используется для хранения чисел, когда точность крайне важна, что бывает при вычислениях с денежными единицами;
• Decimal — еще большее десятичное число с 29 позициями (после запятой можно использовать от 0 до 28 позиций), 8 байт;
• Single и Double — значения с плавающей запятой (4 и 8 байт)
(от -3.402823·10 38 до -1.401298·10 -45 для отрицательных значений и
от 1.401298·10 -45 до 3.402823·10 38 для положительных значений для Single, и
от -1.79769313486232·10 308 до -4.94065645841247·10 -324 для отрицательных значений и
от 4.94065645841247·10 -324 до 1.79769313486232·10 308 для положительных значений для Double); - строковые (String переменной длины (примерно до 2 млрд символов) и фиксированной длины (примерно до 65 400 символов));
- дата и время (Date — от 01.01.100 до 31.12.9999), 8 байт;
- логический (Boolean — может хранить только значения True и False), 2 байта;
- объектный (Object — хранит ссылку на любой объект в памяти);
- Variant — специальный тип данных, который может хранить любые типы данных, 16 байт +1
Обозначения типов данных является ключевыми словами языка (и выделяется после набора в редакторе VBA).
Над различными типами данных допустимы различные операции. В VBA имеются три основных типа операций:
- математические, выполняются над числами, их результатом являются числа;
- операции отношения, могут применяться не только к числам, их результатом является значения логического типа;
- логические, используются в логических выражениях и их результатом являются логические значения.
Организация ввода и вывода сообщений
Подобно многим языкам программирования Visual Basic for Application (VBA) позволяет создать три типа процедур: Sub, Function, Property.
Процедура – это набор описаний и инструкций, сгруппированных для выполнения.
Процедура Sub – набор команд, с помощью которого можно решить определенную задачу. При ее запуске выполняются команды процедуры, а затем управление передается в приложение или процедуру, которая вызвала процедуру Sub. Записываемые макросы автоматически описываются как процедуры Sub, любой макрос или другой код VBA, который просто выполняет определенный набор действий, используя приложения Office, и обычно является процедурой Sub.
Процедура Function (или функция) также представляет собой набор команд, который решает определенную задачу. Различия заключается в том, что процедуры данного типа обязательно возвращают значение. При создании процедуры Function можно описать тип данных, который возвращает функция. Функции обычно используются при выполнении вычислений, операциями с текстом, либо возвращают логические значения.
Процедура Property используется для ссылки на свойство объекта. Данный тип процедур применяется для установки или получения значения пользовательских свойств форм и модулей. Процедуры облегчают хранение и применение информации, если использовать их сначала для сохранения в свойстве этой информации, а затем для ее чтения.
Структура процедуры
При записи процедуры требуется соблюдать правила ее описания. Упрощенный синтаксис для процедур Sub является следующим:
Синтаксис описания функций очень похож на синтаксис описания процедуры Sub, однако, имеются некоторые отличия:
Использование операторов
Процедуры состоят из операторов – наименьших единиц программного кода. Как правило, операторы занимают по одной строке программного кода, и в каждой строке обычно содержится только один оператор, но это не обязательно. В VBA имеется четыре типа операторов: объявления, операторы присваивания, выполняемые операторы и параметры компилятора.
Объявления
Объявление – это оператор, сообщающий компилятору VBA о намерениях по поводу использования в программе именованного объекта (переменной, константы, пользовательского типа данных или процедуры). Кроме того, объявление задает тип объекта и обеспечивает компилятору дополнительную информацию о том, как использовать данный объект. Объявив объект, можно использовать его в любом месте программы.
Переменные – это именованные значения, которые могут изменяться во время выполнения программы.
Рассмотрим пример объявления переменной.
С помощью оператора Dim объявляется переменная с именем МоеЛюбимоеЧисло и объявляется, что значение, которое она будет содержать, должно быть целым:
Константы представляют собой именованные значения, которые не меняются.
Оператор Constant создает строковую константу (текст) с именем НеизменныйТекст, представляющую собой набор символов Вечность:
Оператором Type объявляется пользовательский тип данных с именем Самоделкин, определяя его как структуру, включающую строковую переменную с именем Имя и переменную типа Date с именем ДеньРождения. В данном случае объявление займет несколько строк:
Объявление Private создает процедуру типа Sub с именем СкрытаяПроцедура, говоря о том, что эта процедура является локальной в смысле области видимости. Завершающий процедуру оператор End Sub считается частью объявления.
Оператор присваивания
Оператор присваивания = приписывают переменным или свойствам объектов конкретные значения. Такой оператор всегда состоят из трех частей: имени переменной, или свойства, знака равенства и выражения, задающего нужное значение.
Оператор = присваивает переменной МоеЛюбимоеЧисло значение суммы переменной ДругоеЧисло и числа 12.
В следующей строке кода, записывается, что свойству Color (Цвет) объекта AGraphicShape присваивается значение Blue (Синий) в предположении, что Blue является именованной константой:
В следующеей строке, чтобы задать значение переменной КвадратныйКорень, для текущего значения переменной МоеЛюбимоеЧисло вызывается функция Sqr — встроенная функция VBA вычисления квадратного корня:
В VBA выражением называется любой фрагмент программного кода, задающий некоторое числовое значение, строку текста или объект. Выражение может содержать любую комбинацию чисел или символов, констант, переменных, свойств объектов, встроенных функций и процедур типа Function, связанных между собой знаками операции (например, + или *). Несколько примеров выражений:
Объясните назначение оператора With — End With
Назначение оператора ::
Добрый день! Сейчас изучаю классы и в примерах часто сталкиваюсь с конструкциями типа void.
Назначение оператора return
Клянусь вам что прочёс огромное кол-во статей, форумов и т.д. про функцию return, но так и не понял.
Каково назначение оператора %
Изучал скрипт unity который был любезно предоставлен одним разработчиком на форуме и мне непонятен.
Назначение оператора delete[]
Для освобождения динамической памяти от массива предлагают оператор delete #include <iostream>.
With. End With allows you to perform a series of statements on a specified object without requalifying the name of the object. If the qualification path to the object is long, using With. End With can improve your performance. A With block also reduces repetitive typing of the qualification path and the risk of mistyping one of its elements.
For example, to change a number of different properties on a single object, place the property assignment statements inside the With. End With, referring to the object only once instead of for each property assignment.
Rules
Data Types. The data type of object can be any class or structure type, or even a Visual Basic elementary type such as Integer. The .NET Framework supports all elementary types with classes or structures, which have members you can access inside a With block.
Declaration. You must declare object before you enter the With block. You cannot declare it in the With statement.
Number of Iterations. A With block is not an iterative construction. Unless there is a loop inside the block, the statements run only once.
Nesting Structures. You can nest With. End With structures by placing one structure within another. For an example, see How to: Perform Multiple Actions on an Object.
However, because members of outer statements are masked inside the inner statements, you must provide a fully qualified object reference in an inner With block to any member of an object in an outer With block.
You can also nest different kinds of control structures within one another. For more information, see Nested Control Structures.
Transferring Out of the Structure. Visual Basic does not support the Exit Statement (Visual Basic) to transfer control out of a With block. If you need to exit before all the statements have been executed, put a label on the End With statement and use the GoTo Statement to branch to it. For more information, see How to: Label Statements.
You cannot transfer control either from outside a With block to inside it, or from inside it to the outside. You can call a procedure from inside the block, but control returns to the following statement.
Accessing Other Objects. Once you have entered a With block, you cannot reassign object until you have passed the End With statement. Therefore, you can access the methods and properties of only the specified object without qualifying them. You can use methods and properties of other objects, but you must qualify them with their object names.