Remkomplekty.ru

IT Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Visual basic excel операторы

Visual basic excel операторы

Инструкции (или операторы) языка – это программные единицы, выполняющие какие-то действия или описывающие данные.

В состав оператора входят одно или несколько ключевых слов, а также, возможно, параметры. Несколько операторов, расположенных в одной программной строке, отделяются друг от друга двоеточием. Если оператор слишком длинный, можно разбить его на несколько строк, используя для переноса символ подчеркивания _.

Оператор присвоения используется для присвоения нового значения переменной в ходе выполнения программы. Знак присвоения «=».

Например, оператор:

x = Sqr(5 + Tan(1.8) ^ 2)

присваивает переменной х значение выражения . В результате вычисления выражения, записанного в правой части, получим вещественное число. Но значение, которое будет присвоено переменной х, зависит от того, как был описан тип этой переменной. Так, если переменная х имеет тип Single, ей будет присвоен результат 4,834464 , если Double, то 4,83446368725481, а если Integer, то 5.

Тип данных переменной х должен быть совместим с типом данных этого выражения. Кроме неявного преобразования из одного типа в другой при присвоении, в языке Visual Basic предусмотрена возможность преобразования типов с помощью функций. Например, функция CDbl преобразует данные к типу Double, CInt – к типу Integer, Clng – к типу Long, CSng – к типу Single, CStr – к типу String и т. д.

Функции CInt и Clng выполняют округление результата. При этом если дробная часть числа равна 0,5, округление производится до ближайшего четного числа.

Оператор присвоения позволяет не только присвоить значение переменной, но и задать значения свойств объектов VBA. Например, оператор

Rows(«1:1»).Font. Bold = True

делает полужирным шрифт в первой строке рабочего листа.

ПЕРЕНОС СТРОКИ

Комбинация + в конце строки обеспечивает то, что последующая строка является продолжением предыдущей. При этом надо помнить что:

§ Нельзя разбивать переносом строковые константы

§ Допустимо не более семи продолжений одной и той же строки

§ Сама строка не может содержать более 1024 символов

Некорректный перенос Корректный перенос

Строка = «Visual Basic for _ Строка = «Visual Basic» _

Applications» & «for Applications «

КОММЕНТАРИИ

Текст, следующий в программе за символом ( ‘ ) вплоть до конца строки игнорируется компилятором и является комментарием. С помощью комментариев добавляются пояснения и описания к программе. Комментарии полезны при отладке программы: они позволяют временно отключить строки программы при отладке.

Условный оператор

Условный оператор выполняет определенные инструкции (операторы) в зависимости от значения выражения условия. Блок-схема проверки условия имеет вид:

Рис. 1. Ветвление может быть неполным (такую структуру называют еще обход).

Рис. 2. Условный оператор имеет две формы синтаксиса: строчную и блочную.

Строчная форма

If условие Then [операторы­_если_истина] [Else операторы­_если_ложь]

Алгоритм, представленный на рис. 1, в строчной форме будет записан в виде

If условие Then операторы­_если_истина Else операторы­_если_ложь

Рисунку 2 соответствует запись

If условие Then операторы­_если_истина

Рисунку 3 соответствует запись

If условие Then Else операторы­_если_ложь

Блочная форма

If условие-1 Then

[ElseIf условие-2 Then

[операторы­_если_ условие–1_ложь, а_условие–2_истина]]

[операторы­_если_ все_предыдущие_условия_ложь, а_условие–n_истина]]

Условия, перечисленные в частях If и ElseIf, представляют собой выражения отношения или логические выражения. При выполнении одного из условий выполняются инструкции, следующие за соответствующим ему ключевым словом Then, а остальные инструкции игнорируются (т. е. дальнейшие проверки не выполняются и управление передается оператору, следующему за End If). Если ни одно из логических условий не равно истине, то выполняются операторы­_если_ все_предыдущие_условия_ложь, либо, если эта часть опущена, управление передается строке программы, следующей после условного оператора.

Блочная форма оператора If более предпочтительна, если:

— при выполнении или невыполнении условия выполняется несколько операторов (строчную форму в этом случае тоже можно использовать, но строка будет слишком длинной, а программа – менее понятной);

— последовательно проверяется несколько условий, и при выполнении очередного условия проверять последующие условия нецелесообразно (для этого и используется ключевое слово ElseIf).

Пример

Фирма предоставляет скидки оптовым покупателям.

Visual basic excel операторы

При создании сложных программ один из ключевых моментов — возможность предусмотреть несколько вариантов развития событий. Самый простой и классический пример — оператор «If . Then . Else . End«, который позволяет выбрать одно из двух действий в зависимости от результатов проверки каких-либо значений. Бывает, что в результате такой проверки необходимо выбрать из множества вариантов. Один из выходов: добавить множество «. ElseIf . «, что несколько усложняет синтаксис программы (лёгкость её чтения). Однако это очень мощный оператор, открывающий большие возможности. Подробнее о нём можно узнать здесь.

Альтернативой оператору «If . End» служит оператор «Select Case» (с английского «Select Case» можно перевести как «Выбор Ситуации»), который упрощает восприятие кода «на глаз». И если «If . End» оператор в каждом своём «ElseIf» вынужден обращаться к проверяемым значениям снова и снова (допустим, выражение каждый раз одинаковое), то «Select Case» делает это только один раз, что позволяет последнему на больших массивах данных работать быстрее. Этот оператор позволяет удобно задать ветвление программы из одной точки в большое количество веток. То есть в основном применяется при множественных условиях проверки, когда проверяемых условий больше двух.

Структура оператора «Select Case».

Давайте посмотрим, как выглядит обобщённая структура оператора и разберём, что есть что (разные примеры частного использования кода будут приведены в конце статьи):

В качестве куска [Значение] можно вставить любую переменную или свойство, значение которой или которого Вы можете проверить. Можно также проверять значение конкретной ячейки. При этом работать можно не только с числами, но и с текстами. И даже с булевыми значениями TRUE/FALSE («Правда» и «Ложь»), о чем знают не все.

Читать еще:  Перебор ячеек в excel vba

[Конкретное Значение] — это то, с чем сравнивается [Проверяемое Значение]. И, если одно удовлетворяет другому, то выполняется [Некоторое Действие]. Есть несколько вариантов записи для блока [Конкретное Значение]. Для текстовых и числовых значений можно записывать разные значения через запятую:

Для чисел можно выбирать диапазоны:

Также для чисел можно использовать логический оператор сравнения вместе с частицей «Is«:

Допустимо использовать и логические операторы, что позволит предусматривать сложнейшие случаи и проводить параллельные сравнения с другими переменными. Кроме оператора «Or», который заменяется обычной запятой.

[Некоторое Действие] может быть абсолютно любым. Если вы его пропускаете — то для данного случая программа будет бездействовать. «Case [Конкретное Значение]» вместе с частью [Некоторое Действие] складываются в один блок:

Таких блоков может быть любое количество, которое уложится в предельные размеры процедуры (она должна весить не более 64 килобайт). Полезно знать, что VBA просматривает соответствие [Конкретного Значения] и [Проверяемого Значения] вдоль по блокам сверху вниз. То есть, у Вас может быть два блока с одинаковым «Case«, но выполнится только тот, который будет раньше найден программой при просмотре кода сверху вниз.

Case Else — это все другие случаи, которые не подошли ни под одно другое [Конкретное Значение] во всех блоках оператора «Select Case«. Если блок «Case Else» отсутствует и ни один другой блок не подошёл, то программа делает логичное «ничего». Case Else должен быть последним проверяемым случаем среди всех блоков проверки в операторе. После него других блоков быть не должно, иначе получим синтаксическую ошибку «Case without Select Case«.

В конце оператора должен стоять «End Select«, который служит «точкой» в «предложении» оператора.

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

Рассмотрим несколько примеров использования кода и начнём с самого простого. В первом примере в зависимости от значения Х выводится сообщение.

Второй пример показывает некоторые виды записи проверяемого значения. В зависимости от количества листов в книге с макросом выводится разное сообщение. Обратите внимание, что если листов в книге 7, то первым сработает “Case 7”, хотя условие “Case 5 to 12” тоже подходит, но стоит позже.

Третий пример ориентируется на булево значение TRUE или FALSE. Проверяется, виден или скрыт последний лист в текущей книге с макросом. С помощью двоеточия может заменяться перенос строки для получения более изящного кода.

Четвёртый пример показывает, что «Case» может ориентироваться и на другие переменные. В данном случае будем проверять равенство трёх переменных с помощью логического оператора «And»:

Пятый пример показывает, как через запятую в проверяемом значении для «Case» можно указать целый набор чисел. Допустим, есть некоторая функция и мы проверяем, может ли наше число в этой функции использоваться. По условию, нас устраивают числа в диапазоне от 5 (не включая 5) до минус бесконечности, от 12 до 15 включая концы и от 20 (включая 20) до плюс бесконечности.

Подводя черту, замечу, что оператор «Select Case» по структуре довольно прост и удобен в использовании. Он менее гибок по сравнению с «If … End», если по ходу проверок требуется менять проверяемое значение, но значительно выигрывает при разнообразных проверках одного и того же выражения. Для чего собственно и был создан.

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 excel цвет текста

Операторов сравнения в 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 имеются три основных типа операций:

  • математические, выполняются над числами, их результатом являются числа;
  • операции отношения, могут применяться не только к числам, их результатом является значения логического типа;
  • логические, используются в логических выражениях и их результатом являются логические значения.

Операторы VBA

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

При составлении программ следует придерживаться ряда соглашений. Так, на одной строке можно разместить несколько операторов. Между операторами в одной строке ставится двоеточие.

Любую строку можно разбить на две, расположив в конце первой знаки символов «Пробел» + «Знак подчеркивания» ( _), в этом случае вторая строка будет считаться продолжением первой.

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

Читать еще:  Макрос excel содержимое ячейки

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 (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, связанных между собой знаками операции (например, + или *). Несколько примеров выражений:

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×