Все операторы vba excel

На чтение 6 мин Опубликовано 15.12.2015

Содержание

  1. Операторы Excel VBA
  2. Математические операторы
  3. Строковые операторы
  4. Операторы сравнения
  5. Логические операторы
  6. Встроенные функции

Операторы Excel VBA

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

Математические операторы

Основные математические операторы VBA перечислены в таблице ниже.

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

Оператор Действие Приоритет
(1 — высший; 5 — низший)
^ Оператор возведения в степень 1
* Оператор умножения 2
/ Оператор деления 2
Оператор деления без остатка – возвращает результат деления двух чисел без остатка. Например, 74 возвратит результат 1 3
Mod Оператор модуля (остатка) – возвращает остаток от деления двух чисел. Например, 8 Mod 3 возвратит результат 2. 4
+ Оператор сложения 5
Оператор вычитания 5

Строковые операторы

Основной строковый оператор в Excel VBA – это оператор конкатенации & (слияние):

Оператор Действие
& Оператор конкатенации. К примеру, выражение «A» & «B» возвратит результат AB.

Операторы сравнения

Операторы сравнения используются для сравнения двух чисел или строк и возвращают логическое значение типа Boolean (True или False). Основные операторы сравнения Excel VBA перечислены в этой таблице:

Оператор Действие
= Равно
<> Не равно
< Меньше
> Больше
<= Меньше либо равно
>= Больше либо равно

Логические операторы

Логические операторы, как и операторы сравнения, возвращают логическое значение типа Boolean (True или False). Основные логические операторы Excel VBA перечислены в таблице ниже:

Оператор Действие
And Операция конъюнкции, логический оператор И. Например, выражение A And B возвратит True, если A и B оба равны True, в противном случае возвратит False.
Or Операция дизъюнкции, логический оператор ИЛИ. Например, выражение A Or B возвратит True, если A или B равны True, и возвратит False, если A и B оба равны False.
Not Операция отрицания, логический оператор НЕ. Например, выражение Not A возвратит True, если A равно False, или возвратит False, если A равно True.

В приведённой выше таблице перечислены не все логические операторы, доступные в VBA. Полный список логических операторов можно найти на сайте Visual Basic Developer Center.

Встроенные функции

В VBA доступно множество встроенных функций, которые могут быть использованы при написании кода. Ниже перечислены некоторые из наиболее часто используемых:

Функция Действие
Abs Возвращает абсолютную величину заданного числа.

Пример:

  • Abs(-20) возвращает значение 20;
  • Abs(20) возвращает значение 20.
Chr Возвращает символ ANSI, соответствующий числовому значению параметра.

Пример:

  • Chr(10) возвращает перенос строки;
  • Chr(97) возвращает символ a.
Date Возвращает текущую системную дату.
DateAdd Добавляет определённый временной интервал к заданной дате. Синтаксис функции:

DateAdd(интервал, число, дата)

Где аргумент интервал определяет тип временного интервала, добавляемого к заданной дате в количестве, указанном в аргументе число.

Аргумент интервал может принимать одно из следующих значений:

Интервал Значение
yyyy год
q квартал
m месяц
y день года
d день
w день недели
ww неделя
h час
n минута
s секунда

Пример:

  • DateAdd(«d», 32, «01/01/2015») добавляет 32 дня к дате 01/01/2015 и, таким образом, возвращает дату 02/02/2015.
  • DateAdd(«ww», 36, «01/01/2015») добавляет 36 недель к дате 01/01/2015 и возвращает дату 09/09/2015.
DateDiff Вычисляет количество определённых временных интервалов между двумя заданными датами.

Пример:

  • DateDiff(«d», «01/01/2015», «02/02/2015») вычисляет количество дней между датами 01/01/2015 и 02/02/2015, возвращает результат 32.
  • DateDiff(«ww», «01/01/2015», «03/03/2016») вычисляет количество недель между датами 01/01/2015 и 03/03/2016, возвращает результат 61.
Day Возвращает целое число, соответствующее дню месяца в заданной дате.

Пример: Day(«29/01/2015») возвращает число 29.

Hour Возвращает целое число, соответствующее количеству часов в заданном времени.

Пример: Hour(«22:45:00») возвращает число 22.

InStr Принимает в качестве аргументов целое число и две строки. Возвращает позицию вхождения второй строки внутри первой, начиная поиск с позиции, заданной целым числом.

Пример:

  • InStr(1, «Вот искомое слово», «слово») возвращает число 13.
  • InStr(14, «Вот искомое слово, а вот еще искомое слово», «слово») возвращает число 38.

Примечание: Аргумент-число может быть не задан, в таком случае поиск начинается с первого символа строки, заданной во втором аргументе функции.

Int Возвращает целую часть заданного числа.

Пример: Int(5.79) возвращает результат 5.

Isdate Возвращает True, если заданное значение является датой, или False – если датой не является.

Пример:

  • IsDate(«01/01/2015») возвращает True;
  • IsDate(100) возвращает False.
IsError Возвращает True, если заданное значение является ошибкой, или False – если ошибкой не является.
IsMissing В качестве аргумента функции передаётся имя необязательного аргумента процедуры. IsMissing возвращает True, если для рассматриваемого аргумента процедуры не передано значение.
IsNumeric Возвращает True, если заданное значение может быть рассмотрено как число, в противном случае возвращает False.
Left Возвращает заданное количество символов от начала переданной строки. Синтаксис функции вот такой:

Left(строка, длина)

где строка – это исходная строка, а длина – количество возвращаемых символов, считая от начала строки.

Пример:

  • Left(«абвгдежзиклмн», 4) возвращает строку «абвг»;
  • Left(«абвгдежзиклмн», 1) возвращает строку «а».
Len Возвращает количество символов в строке.

Пример: Len(«абвгдеж») возвращает число 7.

Month Возвращает целое число, соответствующее месяцу в заданной дате.

Пример: Month(«29/01/2015») возвращает значение 1.

Mid Возвращает заданное количество символов из середины переданной строки. Синтаксис функции:

Mid(строка, начало, длина)

где строка – это исходная строка, начало – позиция начала извлекаемой строки, длина – количество символов, которые требуется извлечь.

Пример:

  • Mid(«абвгдежзиклмн», 4, 5) возвращает строку «гдежз»;
  • Mid(«абвгдежзиклмн», 10, 2) возвращает строку «кл».
Minute Возвращает целое число, соответствующее количеству минут в заданном времени.Пример: Minute(«22:45:15») возвращает значение 45.
Now Возвращает текущую системную дату и время.
Right Возвращает заданное количество символов от конца переданной строки. Синтаксис функции:

Right(строка, длина)

Где строка – это исходная строка, а длина – это количество символов, которые надо извлечь, считая от конца заданной строки.

Пример:

  • Right(«абвгдежзиклмн», 4) возвращает строку «клмн»;
  • Right(«абвгдежзиклмн», 1) возвращает строку «н».
Second Возвращает целое число, соответствующее количеству секунд в заданном времени.

Пример: Second(«22:45:15») возвращает значение 15.

Sqr Возвращает квадратный корень числовой величины, переданной в аргументе.

Пример:

  • Sqr(4) возвращает значение 2;
  • Sqr(16) возвращает значение 4.
Time Возвращает текущее системное время.
Ubound Возвращает верхний индекс измерения заданного массива.

Примечание: Для многомерных массивов в качестве необязательного аргумента может быть указано, индекс какого именно измерения нужо возвратить. Если не указано, то по умолчанию равно 1.

Year Возвращает целое число, соответствующее году в заданной дате.Пример: Year(«29/01/2015») возвращает значение 2015.

Данный список включает в себя только избранные наиболее часто употребляемые встроенные функции Excel Visual Basic. Исчерпывающий список функций VBA, доступных для использования в макросах Excel, можно найти на сайте Visual Basic Developer Center.

Оцените качество статьи. Нам важно ваше мнение:

Условные обозначения:
a|b — вводится одно из нескольких возможных значений, [x] — необязательные параметры,
<информация, которая должна быть введена пользователем или программой>.

Введение

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

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

Каждый, кто будет приобщаться к разработке, неизбежно пройдет определенные стадии.

  1. Изначальной предпосылкой всегда будет осознанная необходимость или принуждение в учебном процессе.

    Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!


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

….

Операторы

Microsoft делит операторы в VBA на арифметические, объединения, сравнения и логические, что, в общем, сразу и нарушает.
Поэтому мы пойдем немного своим путем, что сути не изменит, но упростит понимание.

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

Оператор Название оператора Пример операции Результат
= Присваивание с = с + 1 Увеличение
значения x на 1
+ Сложение x = 2 + 5 x = 7
Вычитание x = 2 — 5 x = -3
* Умножение x = 2 * 5 x = 10
^ Возведение в степень x = 2^3 x = 8
/ Деление x = 2/5 x = 0,4
Целая часть от деления x = 125 x = 2
Mod Остаток от деления (modulo of division) x = 2 Mod 5
x = 10 Mod 4
x = 2 (5*0+2)
x = 2 (4*2+2)
&/+ Конкатенация (слияние) выражений с преобразованием их к типу String.
Может использоваться для соединения данных разного типа в символьный
x = «2» & «5»,
либо x = «2» & 5,
либо(!) x = «2» + «5»
x = «25»

В отличие от других операторов, присваивание может быть использовано в строке только один раз, в связи с чем во многих случаях для него используется
предварительное двоеточие: Unit:=wdCharacter.

В Visual Basic двоеточие служит для оформления нескольких строк в одну. Зачастую это не только делает текст более компактным, но и помогает быстрее его понять:

x(1,1) = «Иванов» : x(1,2) = «Иван» : x(1,3) = «Иванович» : x(1,4) = «01.01.1990»

Операторы сравнения

Возвращают значение True, False или NULL.

Оператор Название оператора
= Тот же, что и присвоение
< Меньше
> Больше
<= Меньше или равно
>= Больше или равно
<> Не равно
Is Сравнение двух объектов
Like Сравнение двух строк с возможностью использования шаблона
Eqv Сравнение двух выражений

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

Логические операторы

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


Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!


Переменные и типы данных

Именование переменных

См. в материале по основам программирования.

Создание переменных

Если не задана обязательность объявления переменной (Option Explicit), то любая переменная может быть создана самим фактом ее использования.
То есть строка x = 1 создаст переменную x с типом Variant и присвоит ей числовое значение единицы.

При этом ничто не препятствует использовать команду создания с указанием типа (необязательным), например,

Dim x As Integer

Несколько переменных в одной строке указываются через запятую.

Dim x As Integer, y As String

Создание массивов см. в разделе Действия над массивами.

Область видимости переменных

Краткий смысл темы заключается в том, откуда можно обратиться к переменной, чтобы считать значение и/или изменить его: только из программы, любой программы модуля, из любого модуля.

По умолчанию действует следующая схема.

  1. Переменные, объявляемые на уровне процедуры переменные доступны только внутри соответствующей процедуры.
  2. Переменные, объявляемые на уровне модуля (в области общих задач), доступны всем процедурам внутри этого модуля, но имеют статус Private.
  3. Переменные, объявляемые на уровне модуля как глобальные (общие, Public), доступны для всех процедур в проекте.
  4. Константы являются частными (Private) по умолчанию. Внутри процедур константы всегда являются частными, их видимость изменить нельзя.
    В стандартных модулях по умолчанию видимость констант уровня модуля(!) можно изменить с помощью ключевого слова Public.

Основные типы данных

Хотя типов данных (точнее программных переменных, в которых данные хранятся) довольно много, можно выделить и сгруппировать наиболее важные, имеющие общие правила обработки.

В квадратных скобках указан размер в байтах. Кроме указания на место, занимаемое в памяти, для многих типов это определяет
возможный диапазон значений. Так, 2 байта для целых чисел дают 22*8 (65536) значений. Но один бит используется для указания знака,
что ограничивает диапазон значений 215 (до ±32768).

  • Логический (булевый, Boolean) [2]. Служит для хранения логической информации: True (истина) или False (ложь).
    Для обозначения используются True и False, для функции «Write #» — #TRUE# и #FALSE#.
  • Символьный (String, text, character, строковый) [длина строки]. Понятно, что львиная доля информации хранится в виде символов.
    Может содержать символы с кодами от 0 до 255!
    Делится на две разновидности:

    • Строка фиксированной длины [1–216].
      Объявляется командой типа (для 5 символов): Dim а As String * 5
    • Строка переменной длины [1–231].
  • Числовой (Numeric). Один из наиболее разветвленных видов, что связано с множеством условий и возможностей для работы с числовой информацией,
    а также её особой важностью для обработки программными средствами.

    • Целочисленный (integer, byte, long) [1–8]. Может хранить только целые числа.
      • Целочисленный (Byte) [1]. Число от 0 до 255. Парадокс, но в этом типе выгоднее хранить логическую информацию, чем в Boolean.
      • Целочисленный (Integer) [2]. Число от –32 768 до 32 767.
      • Целочисленный (Long) [4]. Число от –2 147 483 648 до 2 147 483 647.
      • Целочисленный (LongLong) [8]. Число от –9 223 372 036 854 775 807, до 9 223 372 036 854 775 807.
    • С плавающей точкой (Float) в чистом виде в VBA отсутствует и делится на два конкретных подвида.
      • Single [4]. Диапазоны:
        от –3,402823E38 до –1,401298E-45 для отрицательных значений,
        от 1,401298E-45 до 3,402823E38 для положительных значений.
      • Double [8]. Диапазоны:
        от –1,79769313486231E308 до –4,94065645841247E-324 для отрицательных значений
        от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений
    • Денежный (Currency) [8]. Точность указания чисел — с обязательными четырьмя десятичными разрядами.
      Иногда называют банковским типом, хотя последний должен содержать 8 десятичных разрядов.
      Может хранить число от –922 337 203 685 477,5808 до 922 337 203 685 477,5807.
    • Десятичный (Decimal) [12]. Диапазон хранимых данных зависит от точности (числа десятичных разрядов) и наличия знака.
  • Даты (Date) [8] в виде чисел с плавающей запятой. Диапазон дат: от 1 января 100 до 31 декабря 9999 г. Нулю соответствует 1 января 1900 г.
    Десятичная часть соответствует доле суток, то есть времени.
  • Время (Time) как описанный тип в VBA отсутствует, для него используется десятичная часть от Date.
    При этом команда MyTime = #17:04:23# создаст переменную, содержащую время, есть функции для его обработки. Мда…
  • Для Visual Basic и VBA характерно наличие особого универсального типа переменной (Variant), которая может хранить значения большинства других типов.
  • Другое. Collection, Dictionary, Object [4].

См. также сводку типов данных на сайте Microsoft.

Действия над данными

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

Символьные данные обычно используются в операции сложения (объединения/конкатенации), когда нужно собрать из кусочков выражение.


Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!


Логические данные полностью подчиняются законам алгебры логики.
Хотя бояться этого точно не стоит: подобные дебри бесконечно редко возникают в программировании, все остается на уровне максимального примитива.
Три оператора (Or, And, Not) покрывают более 99% случаев и относятся к области одновременной оценки нескольких объектов или разных характеристик одного объекта.

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

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

Действия над массивами

Массивом называется специфический вид переменной, содержащий некое множество структурированных данных (элементов).
Для восприятия удобно рассматривать массивы в виде таблицы. На этом же основана логика обращения к данным.

Соответственно, можно условно выделить три варианта:

  1. Одномерный массив, то есть состоящий из одной колонки.
  2. Двумерный массив представляет собой истинную простую таблицу (n колонок на m строк).
  3. Многомерный массив в VBA может содержать до 60 измерений.
    Реально можно представить трехмерный массив, в виде набора простых двумерных таблиц, расположенных друг за другом.

Нумерация элементов массива в VBA по умолчанию начинается с нуля.
Это определяется директивой Option Base.
Вызов команды Option Base 1 сменит нижнюю границу нумерации на 1.
Материал, приведенный ниже рассматривает ситуацию по умолчанию (Option Base 0).

Функция Array позволяет создать одномерный массив путем перечисления его значений:

A_Arr = Array(1, 5, 15)


Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!


Функции

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

Вызов функций, как правило, одинаковый:

переменная = ИмяФункции([аргументы через запятую]).

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

Порядок указания аргументов задается строго. Менять их местами нельзя! Если значение среднего аргумента опускается, то должна быть поставлена пустая запятая:

MsgBox(«Сообщение», , «Заголовок»).

Но! В описании функции может быть указано, что первый аргумент необязательный, а его значение присваивается по умолчанию (см. InStr()).

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

Вместе с тем, многие функции могут не иметь аргументов вообще, так как обрабатывают определенную заранее системную информацию.
Например, функция Date() во многих языках.

Ниже приведены некоторые наиболее важные функции с их разбивкой по принципу типа обрабатываемой информации (в алфавитном порядке).
Как показывает практика, подобное разделение наиболее эффективно.

Символьные (строковые) функции

Функция Назначение
Asc(<строка>) Возвращает ASCII-код (0–255) первого символа строки
Chr(<число>) Преобразует ASCII-код (0–255) в символ (строку)
InStr([начало, ]<строка, в которой ищем>, <искомая строка>) Находит позицию первого вхождения одной строки внутри другой. InStr(3, «корова», «о») вернет значение 4.
То есть, начиная с третьей буквы, «о» стоит на четвертой позиции в слове. (InstrRev работает также, но с конца строки.)
LCase(<строка>), UCase(<строка>) Возвращает строку, преобразованную в нижний и верхний регистры соответственно
Left(<строка>, <число символов>) Возвращает число первых (слева) символов строки. Если их меньше, чем запрошено, возвращается вся строка
Len(<строка>) Возвращает количество символов в строке (длину строки)
Mid(<строка>, <номер начального символа>[, <число символов>]) Выделяет фрагмент из строки. Mid(«корова», 2, 3) вернет «оро»: три символа, начиная со второго
Replace(<строка>, <что>, <на что>) Возвращает строку, заменив в ней одни фрагменты на другие
Right(<строка>, <число символов>) Возвращает указанное число последних (справа/концевых) символов строки
Space(<число>) Возвращает строку, состоящую из «числа» пробелов (специализированный String)
StrReverse(<строка>) Возвращает строку со знаками в обратном порядке
String(число, символ) Возвращает строку, состоящую из «числа» повторяющихся символов
Trim(<строка>), LTrim(<строка>) и RTrim(<строка>) Удаляют из строки пробелы слева (LTrim), справа (RTrim), или с обеих сторон (Trim)
Val(<строка>) Преобразует строку в число. Правильно обрабатываются только строки с десятичным разделителем точкой!

Коды (Asc/Chr) некоторых важных символов.

Символ ASCII-код
Табулятор 9
Enter 13
Esc 27
Пробел 32 (первый неслужебный знак)
! 33 (первый знак, который выводится на экран и на печать)
Цифры (0–9) 48–57
Английские буквы (A–Z) 65–90
Английские буквы (a–z) 97–122
Русские буквы (А–Я) 192–223
Русские буквы (а–я) 224–255

Функции даты и времени

Функция Назначение
DateAdd(интервал, число, дата) Прибавляет к дате «число» интервалов (лет, месяцев, недель и т.д.). Интервал задается символьным шаблоном
DateSerial(год, месяц, день) Возвращает значение даты. Каждый из числовых аргументов может быть математическим выражением
TimeSerial(час, минута, секунда) Возвращает значение времени. Каждый из числовых аргументов может быть математическим выражением
TimeValue(<строка времени>) Извлекает значение времени (Time) из его строкового представления в любом варианте, основанном на шаблоне разделения двоеточием («0:00:00»)
Hour(<время>) Выделяет из строки времени (тип Time) часы (тип Integer)
Minute(<время>) Выделяет из строки времени (тип Time) минуты (тип Integer)
Second(<время>) Выделяет из строки времени (тип Time) секунды (тип Integer)
Time Возвращает системное время компьютера. Тип — Time. В VBA используется без скобок (то есть MyTime = Time)
Date Возвращает системную дату компьютера. Тип — Date. В VBA используется без скобок (то есть MyDate = Date)
Now Возвращает системную дату и время компьютера. Today = Now
Timer Возвращает количество секунд (с дробной частью), прошедших после полуночи
Weekday(<дата>, [номер первого дня недели]) Возвращает номер дня недели указанной даты. По умолчанию, первый день недели — воскресенье.
Чтобы получить в привычном нам порядке, следует задать второй аргумент — двойку: Weekday(«01.01.2009», 2)

Числовые и математические функции

Функция Назначение
Abs(x) абсолютное значение (модуль) числа x
Atn(x) арктангенс угла x в радианах (от –π/2 до π/2)
Cos(x) косинус угла x в радианах
Exp(x) константа e (основание натурального логарифма ~2.718282) в степени x
Log(x) натуральный логарифм от числа
Rnd([x]) генерация случайного числа от 0 до 1. Аргумент x может задавать правила выбора значения
Round(x, [десятичных знаков]) округляет числа с заданной точностью
Sgn(x) знак числа, равно -1 для отрицательных чисел; 1 — для положительных и 0 для x = 0
Sin(x) синус угла x в радианах
Sqr(x) квадратный корень из x
Str(x) преобразует число x в строку. Для положительных чисел в начало добавляется пробел
Tan(x) тангенс угла x в радианах
Fix(x) Отбрасывает дробную часть числа и возвращает целое значение. В отличие от Int(), для отрицательных значений дает ближайшее большее целое (Fix(-3,3) = –3)
Int(x) Отбрасывает дробную часть числа и возвращает целое значение. В отличие от Fix(), для отрицательных значений дает ближайшее меньшее целое (Int(-3,3) = –4)

Производные тригонометрические функции (арксинус…) можно посмотреть здесь.

Чтобы преобразовать градусы в радианы, умножьте градусы на π/180 (π ≈ 3,1415926535897932).

Также имеется множество финансовых функций, не входящих в наш курс обучения.

Функции, задаваемые (или определяемые) пользователем (UDF)

Использование UDF (User Defined Function) позволяет многократно расширить возможности языка программирования и, в гораздо большей степени, уменьшить трудозатраты на разработку.

Серьезная постановка вопроса неизбежно приведет к тому, что начинающий программист не видит необходимости в UDF и не в состоянии правильно определить, что требует выноса в функцию.
К этому следует относиться как к аксиоме. Данный навык формируется постепенно, и лично я не вижу никакого смысла его форсировать, так как насмотрелся на негативные последствия.
Искушенный программист не так уж и часто создает новые функции с нуля, так как за годы работы сформирован основной багаж для решения тех или иных типовых ситуаций.
Скорее происходит доработка личных библиотек.

Вместе с тем, необходимым является понимание как самой идеи, так и технологии ее реализации. Дальнейшее использование неизбежно связано с методом проб и ошибок.

Основания для написания UDF:

  1. Очевидные. Необходимость одинаковых действий, осуществляемых из разных процедур и, особенно, для разных проектов.
    Начинающему программисту это очевидным не кажется, пока не нарастет критическая масса знаний и опыта.
  2. Неочевидные. Необходимость одинаковых действий из одной процедуры. Часто это может быть решено программно (всегда сложнее) и без создания функции.
  3. Скрытые. Уменьшение кода основной программы, очень сходное с рассуждениями на первых этапах устного описания бытовых алгоритмов:
    создается своего рода «черный ящик», обращение к которому и результат такового очевиден, но скрыт.
    Более сложным будет видение возможной перспективы выделения функции, когда, с большой вероятностью, ее удастся применить позже.
    Может быть с существенной переработкой, но первый шаг простимулирует обдумывание решения.

При определении функции вместо Sub используется Function, а для завершения — End Function.

Область видимости. Данный вопрос не обсуждается в литературе.
Сразу отметим, что ни одна функция не видна в списке макросов, так как ее запуск пользователем не подразумевается.
Вызвать функцию можно только обращением из программы.
При обычном определении, функция доступна из любого модуля проекта.
При определении Private Function, к ней можно обратиться только из текущего модуля.
Наоборот, Public Function доступна из любого модуля любого открытого проекта.

Нормой следует считать ситуацию, когда функции передается какая-то информация, подвергающаяся анализу или обработке.
В первом случае возвращается результат анализа, чаще всего логического типа (True или False). Во втором — обработанные данные.

Чтобы использовать возвращаемое значение функции, следует назначить ее переменной, а аргументы заключить в скобки. То есть так же, как для встроенной функции.
Например, для вызова функции без аргументов с ожиданием возврата целого числа в диапазоне 0–255:

	Dim Var As Byte
	Var = MyFunc()

Значение, которое возвращается функцией, должно быть присвоено в процессе обработки переменной с именем функции.

	Function MyFunc() [As Byte]
	    'Необязательное добавление типа при объявлении позволит проверять тип возвращаемого значения 
	    Код функции...
	    MyFunc = 1 'Возвращаемое значение равно единице 
	End Function

Преобразование типов данных

Во всех языках программирования существует большое число функций, предназначенных для преобразования одного типа данных в другой.
Необходимость этого связана с тем, что многие действия можно производить только над данными одного типа. Например, нельзя сложить число 10 и строку из двух цифр: «20»
(в VBA — можно).
Если первое превратить в строку, то результат будет представлять собой четырехсимвольную строку «1020».
Наоборот, преобразовав «20» в число и опять сложив их, получим число 30.

В других ситуациях просто предполагаются разнообразные математические операции над числами, а результат нужно вывести в виде строки, снабженной поясняющими словами.
Например, обработали число 5 и получили число 120. Чтобы собрать строку: «Из числа 5 получен результат 120!», нужно провести преобразование чисел и их сложение с текстом:

«Из числа» + Str(5) + «получен результат» + Str(120) + «!»

Для Word, который мы обсуждаем в первую очередь, это особенно актуально: все фрагменты текста, взятые из документа, представляют собой строку.

Для проверки типа данных (точнее, их анализа) можно воспользоваться одной из функций в формате Функция(<переменная>):
IsArray, IsDate,
IsEmpty, IsError,
IsMissing, IsNull,
IsNumeric, IsObject.

Также можно применить общую функцию TypeName(имя_переменной), возвращающую название типа данных словом из списка:
Byte, Integer, Long, Single, Double, Currency, Decimal, Date, String, Boolean, Error, Empty, Null, Object.

Весьма небесполезна в этом плане также VarType(имя_переменной), возвращающая идентичную информацию, но числом.

Преобразования числа в строку: Str(<число>)

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

Для того, чтобы избавиться от этого пробела, можно использовать одну из двух функций Trim(<строка>) или Ltrim(<строка>).

Важно! В качестве десятичного разделителя распознается исключительно точка!

В более сложных случаях, связанных с преобразованием в дату или пользовательский формат, можно использовать и другую функцию:

Format(Expression, [ Format ], [ FirstDayOfWeek ], [ FirstWeekOfYear ])

Ее побочным эффектом будет строка из числа без ведущего пробела. Синтаксис довольно сложный, так что приведем простейший пример:

Format(x, «General Number»)

Следующий вариант выведет число с отделением разрядов (классов) пробелами:

Format(x, «Standard»)

Преобразования строки в число: Val(<строка>)

Следует четко понимать, что любой текст, взятый из документа, изначально будет набором символов, даже если они представляют собой числа.
Для того, чтобы произвести с ним математические операции и, зачастую, корректное сравнение, требуется превратить их в число.

  1. Функция обработает любую строку и, если она содержит в качестве первого знака цифру, производится преобразование для последующих цифр.
  2. При этом игнорируются пробелы, а первая(!) точка воспринимается как десятичный разделитель. Вторая точка прервет процесс.
  3. Анализ продолжается, пока выполняются пп.1 и 2.
  4. Если значащая цифра в начале не обнаружена, будет возвращен ноль.

Важно! В качестве десятичного разделителя распознается исключительно точка!
Если вам нужно обработать десятичную запятую, воспользуйтесь функцией

Replace(x, «,», «.»)

где x — строковая переменная, содержащая число с десятичной запятой.

Ветвление программ (условные операторы)

Для осуществления ветвления программ используются два основных оператора: If… Else… End If и Case…

Оператор If… Else… End If

По существу, оператор следует переводить как Если… Иначе… Конец Если.

1. Первичным следует считать использование так называемого неполного If. В этом случае не используется часть Else.

	If <условие> Then
	    ...[блок команд]
	End If

Таким образом, блок команд будет выполнен только когда будет истинным условие, заданное на входе оператора.

Пример, в котором переменная памяти x будет уменьшена в 10 раз, только если она превысила значение 10:

	If x > 10 Then
	    x = x/10
	End If

2. Часто встречается случай, когда нужно обработать данные одним из двух способов в зависимости от условия:

	If <условие> Then
	    ...[блок команд 1]
	Else
	    ...[блок команд 2]
	End If

Пример, в котором переменная памяти x возводится в квадрат, если она отрицательна, а иначе — в куб (ноль также будет возводиться в куб):

	If x < 0 Then
	    x = x^2
	Else
	    x = x^3
	End If

3. Наконец, ряд языков (как и VBA) позволяет составлять многоуровневую конструкцию без использования вложения If.

	If a = 1 Then
	    ...[блок команд 1]
	ElseIf a = 2 Then
	    ...[блок команд 2]
	ElseIf b > 0 Then
	    ...[блок команд 3]
	Else
	    ...[блок команд 4]
	End If

Функция IIf()

Так как чрезвычайно часто встречается ситуация, когда единственное назначение условного оператора — изменение переменной памяти по условию, все развитые языки содержат функцию IIf().
Она решает названную задачу в гораздо более компактном виде.

Пример, в котором переменной х присуждается нулевое значение, если она отрицательна и единица во всех остальных случаях:

x = IIf(x < 0, 0, 1)

Недостаток функции заключается в том, что она всегда вычисляет оба значения (и для истинного, и для ложного случая), а, значит, работает сравнительно медленнее.
Также, в некоторых случаях подобные вычисления могут приводить к делению на ноль, если программист не предусмотрит этого заранее.

Оператор Case

В начале конструкции производится вычисление какого-либо выражения, значение которого проверяется на соответствие несколько раз:

	Select Case <проверяемое выражение>
	Case значение1
	    [действия1]
	[Case значение2
	    [действия2]]
	...
	[Case Else
	    [действия для любых других случаев]]
	End Select

Циклы

Организация циклов в программах встречается довольно часто и применяется для двух основных случаев: когда нужно повторить фрагмент программы
определенное количество раз и когда это повторение осуществляется до тех пор, пока выполняется некое условие.

Цикл For…

Классический образец цикла для случаев, когда известно, сколько раз он должен быть повторен, либо это можно вычислить.

Общий синтаксис:

	For счетчик = start To end [Step шаг]
	    [программа]
	    [Exit For]
	    [программа]
	Next [счетчик]

В приводимом далее примере находится произведение четных чисел (шаг = 2) от 2 до введенного пользователем значения y.
Если произведение превысит 1 трлн, то произойдет выход из цикла. Нетрудно убедиться, что i достигнет только 24, а y будет равен 1,961,990,553,600.

	Dim i As Byte, x As Double, y As Integer
	x = 1
	y = InputBox()
	For i = 2 To y Step 2
	    x = x * i
	    If x > 1000000000000 Then
	        Exit For
	    End If
	Next i

Программа не содержит никаких проверок и вывода результата, но, если пользователь введет не то, цикл просто не будет выполняться.
Далее — важный для начинающих момент.
Строка «x = x * i» означает, что переменной x будет присвоен результат ее текущего значения, умноженный на четное i.
После этого производится сравнение.
Запись триллиона в явном виде, а не как 10^9 экономит ресурсы, так как иначе производилось бы возведение в степень на каждом повторении цикла.

For Each In…Next

Объектно-ориентированное программирование предполагает наличие объектов, состоящих из «кучи» элементов.
Результатом стал специализированный цикл For без счетчика, но с перебором каждого (Each) элемента, спрятанного внутри какого-то объекта (In).

Общий синтаксис:

	For Each элемент In имя_объекта(массива)
	    [программа]
	    [Exit For]
	    [программа]
	Next [элемент]

Современная модель приложений MS Office во многом не позволяет обратиться к необходимым сведениям другим способом.

Цикл While…Wend

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

Общий синтаксис:

	While <условие>
	    [тело цикла]
	Wend

Условие является обязательным и может представлять собой символьное или числовое выражение, анализ которого возвращает истинное или ложное значение (то есть логическое).
Если результатом вычисления будет значение Null, то оно расценивается как ложное.

Тело цикла выполняется при истинном значении условия, вплоть до оператора Wend, а затем вновь возвращается на строку While для повторной оценки условия.
Если оно истинно, то происходит повтор тела цикла.
Иначе происходит завершение цикла и исполнение программы продолжается со строки, идущей после Wend.

Цикл While может быть вложенным.

Обратите внимание, что принудительного выхода из цикла нет: только анализ исходного условия!
Для того, чтобы его реализовать, следует воспользоваться циклом Do…Loop.
Эта реализация цикла лучше всего подходит для так называемого «зацикливания» программы, когда он повторяется бесконечно.

Ремарка: прервать ситуацию можно клавишами Esc (если разработчик ее не заблокировал) и Ctrl+C.

Цикл Do (While…|Until…)… Loop

Данный цикл в том или ином виде используется в большинстве языков программирования и исполняется, пока (While) истинно условие или пока условие не будет достигнуто (Until).

Общий синтаксис:

	Do {While|Until} <условие>
	    [тело цикла]
	    [Exit Do]
	    [продолжение тела цикла]
	Loop

или

	Do
	    [тело цикла]
	    [Exit Do]
	    [продолжение тела цикла]
	Loop {While|Until} <условие>

Из синтаксиса следует, что условие можно задать в конце. Тогда цикл будет обязательно исполнен хотя бы один раз.
Во многих языках, чтобы добиться этого, приходится предпринимать дополнительные усилия.

Число команд Exit Do внутри тела не ограничено и обычно реализуется через ветвление с использованием If…Then.
При таком завершении, исполнение программы продолжается со строки, идущей после Loop.

Конструкция With…End With

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

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

Понятно, что в следующем примере речь идет о поиске — всё, что внутри конструкции — строки которого не нужно выискивать в программе.
Фраза «Selection.Find» записана только один раз. Все строки, которые должны получить её в начало, следует начинать с точки.

	With Selection.Find
	    .ClearFormatting
	    .Replacement.ClearFormatting
	    .Text = "?"
	    .Replacement.Text = "!"
	    ...
	End With

Без With это выглядело бы так:

	Selection.Find.ClearFormatting
	Selection.Find.Replacement.ClearFormatting
	Selection.Find.Text = "?"
	Selection.Find.Replacement.Text = "!"
	...

Цвет

Далеко не все возможности работы с цветом однозначны, особенно учитывая отсутствие у многих объектов свойства Color в среде разработки (хотя оно есть).


Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!


Некоторые мысли по оптимизации программного кода

«Идеальное» написание программы всегда было «идолом». Недостижимым даже теоретически.

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

К сожалению, так как не существует решения для многих противоречий, невозможно создание наилучшего программного кода для многих ситуаций.


Доступ к размещенным в этом месте материалам ограничен и предоставляется следующим категориям:
1. Студент I/II курса ВХК РАН. 2. Бывший студент ВХК РАН. 3. Подготовка к ОГЭ. 4. Подготовка к ЕГЭ.


Работа с закладками (Bookmarks)

Закладки могут оказаться весьма востребованными при разработки программы,
так как обеспечивают однозначное перемещение в определенную точку документа, включая выделение фрагмента текста.


Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!


….

Перенос текста программ из модулей

Примитивная задача, ведь все умеют копировать!
Попробуйте. Желаю успеха.
Я вижу два примитивных способа, основанные на одинаковом исходном действии.

Рассказ — на занятии. (PS! Чуйка говорит, что многие в 2021 году этого не услышат.)

Операторы VBA: арифметические, логические, сравнения, присвоения

Оператор — это наименьшая способная выполняться единица кода VBA. Оператор может объявлять или определять переменную, устанавливать параметр компилятора VBA или выполнять какое-либо действие в программе.

Арифметических операторов в VBA всего 7. Четыре стандартных: сложение (+), вычитание (-), умножение (*), деление (/) и еще три:

  • возведение в степень (^), например 2^3 = 8;
  • целочисленное деление (). Делит первое число на второе, отбрасывая (не округляя) дробную часть. Например, 52 = 2;
  • деление по модулю (Mod). Делит первое число на второе, возвращая только остаток от деления. Например, 5 Mod 2 = 1.

Оператор присвоения в VBA — знак равенства. Можно записывать так: Let nVar = 10

а можно еще проще: nVar = 10

Во втором случае не путайте знак равенства с оператором равенства.

Выражение nVar = 10 значит «присвоить переменной nVar значение 10», а если строка выглядит так:

If (nVar = 10) то это значит «если значение переменной nVar равно 10».

Если переменной нужно назначить объект, то делается это другими способами.

Операторов сравнения в VBA всего 8:

  • равенство (=), например, If (nVar = 10);
  • больше, чем и меньше, чем (> и <), например, If (nVar > 10) ;
  • больше или равно и меньше или равно (>= и ≤), например, If (nVar >= 10) ;
  • не равно (<>), например, If (nVar<>10) ;
  • сравнение объектов (Is). Определяет, ссылаются объектные переменные на тот же объект или на разные, например, If (obj1 is obj2) ;
  • подобие (Like). Сравнивает строковый объект с шаблоном и определяет, подходит ли шаблон.

Операторы сравнения всегда возвращают true или false — true, если утверждение истинно, и false, если ложно.

Немного про сравнение строковых значений:

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

Option Compare Text

Чуть подробнее про оператор Like. Общий его синтаксис выглядит как

Выражение1 Like Выражение2

При этом Выражение1 — любое текстовое выражение VBA, а Выражение2 — шаблон, который передается оператору Like. В этом шаблоне можно использовать специальные подстановочные символы

 Подстановочные символы для оператора LIKE

Подстановочный символ

Значение

#

Любая цифра (только одна) от 0 до 9

*

Любое количество любых символов (включая нулевое)

?

Любой символ (только один)

[a,b,c]

Любой символ (только один) из приведенного списка

[!a,b,c]

Любой символ (только один), кроме приведенных в списке

Очень часто при проверке нескольких условий используются логические операторы:

  • AND — логическое И, должны быть истинными оба условия;
  • OR — логическое ИЛИ, должно быть истинным хотя бы одно из условий;
  • NOT — логическое отрицание, возвращает TRUE, если условие ложно;
  • XOR — логическое исключение. В выражении E1 XOR E2 возвращает TRUE, если только E1 = TRUE или только E2 = TRUE, иначе — FALSE;
  • EQV — эквивалентность двух выражений, возвращает TRUE, если они имеют одинаковое значение;
  • IMP — импликация, возвращает FALSE, если E1 = TRUE и E2 = FALSE, иначе — TRUE.

Помнить нужно про AND, OR, NOT, остальные логические операторы используются редко.

Почти в любой программе VBA используются операторы конкатенации. В VBA их два — + или &. Рекомендуется всегда использовать &, потому что:

  • при использовании & производится автоматическое преобразование числовых значений в строковые — нет опасности допустить ошибку;
  • при использовании оператора + сложение строкового значения со значением типа Null дает Null.

Возможно вам это будет интересно!

2020-11-30

Содержание рубрики VBA Excel на сайте «Время не ждёт». Систематизация статей по тематическим группам для ускорения поиска нужной информации по заданной теме.

Знакомство с VBA Excel

Начинаем программировать с нуля
Памятка для начинающих
Первая кнопка (для начинающих)
Первая форма (для начинающих)
Первая функция (для начинающих)
Правильные имена переменных и процедур
Свойства ячейки (объекта Range)
Свойство ActiveCell объекта Application
Свойство Selection объекта Application

Методы VBA Excel

Метод Application.Goto
Метод Application.InputBox (синтаксис, параметры)
Метод Application.Intersect (пересечение диапазонов)
Метод Application.OnKey
Метод Application.OnTime
Метод Application.Union (объединение диапазонов)
Метод Controls.Add пользовательской формы
Метод CreateTextFile (синтаксис, параметры)
Метод Find объекта Range
Метод FindNext объекта Range
Метод Hyperlinks.Add (создание гиперссылки)
Метод OpenTextFile (синтаксис, параметры)
Метод Range.AutoFill (автозаполнение ячеек)
Метод Range.Insert (вставка со сдвигом ячеек)
Метод Range.Justify (переупорядочивание текста)
Метод Range.PasteSpecial (специальная вставка)
Метод Range.Replace (замена текста в ячейках)
Метод Range.Show
Метод WorksheetFunction.Match (поиск позиции)
Метод WorksheetFunction.Sum – сумма аргументов
Метод WorksheetFunction.SumIf
Метод WorksheetFunction.SumIfs
Метод WorksheetFunction.Transpose
Метод WorksheetFunction.VLookup
Методы Count, CountA и CountBlank
Методы CountIf и CountIfs
Методы очистки ячеек (Range.Clear и другие)
Открытие сайта методом FollowHyperlink
Удаление ячеек со сдвигом (Range.Delete)

Объект Range в VBA Excel

Автоподбор высоты объединенной ячейки
Автоподбор ширины объединенной ячейки
Вставка пустой строки или столбца
Вставка формулы в ячейку
Выделенный диапазон ячеек (адрес, выбор, строки)
Выравнивание текста в ячейке
Вырезание, копирование и вставка ячеек (диапазонов)
Диапазон ячеек и массив (обмен значениями)
Диапазон ячеек пуст (определение)
Объединение ячеек и его отмена
Переменная диапазона ячеек (As Range)
Программное создание границ ячеек
Размер ячейки (высота строки, ширина столбца)
Свойства Column и Columns объекта Range
Свойства Row и Rows объекта Range
Свойство Areas объекта Range
Свойство Cells объекта Range
Свойство End объекта Range
Свойство Range.Characters
Свойство Range.CurrentRegion
Свойство Range.Hidden
Свойство Range.Offset
Свойство Range.Resize (синтаксис, примеры)
Свойство Range.Text
Свойство Range.WrapText (перенос текста)
Цвет текста (шрифта) в ячейке
Цвет ячейки (заливка, фон)
Узор (рисунок) в ячейке
Форматирование текста в ячейке (объект Font)
Ячейки (обращение, запись, чтение, очистка)

Объекты VBA Excel

Объект Collection (создание, методы, примеры)
Объект Dictionary (свойства, методы, примеры)
Объект DocumentProperties — свойства документа
Объект FileSystemObject
Объект PageSetup (параметры страницы)
Объект TextStream (свойства и методы)
Рабочая книга (открыть, создать новую, закрыть)
Рабочий лист (обращение, переименование, скрытие)
Рабочий лист (создание, копирование, удаление)
Регулярные выражения (объекты, свойства, методы)

Операторы в VBA Excel

Арифметические операторы
Логические операторы
Оператор Beep (одиночный звуковой сигнал)
Оператор If…Then…Else и функция IIf
Оператор On Error (обработка ошибок)
Оператор Open (синтаксис, параметры)
Оператор Select Case (синтаксис, примеры)
Оператор SendKeys (имитация нажатия клавиш)
Оператор With
Операторы сравнения
Операторы чтения и записи в файл

Переменные в VBA Excel

Глобальная переменная
Ключевое слово Me
Количество измерений массива
Массивы (одномерные, многомерные, динамические)
Пользовательские типы данных (оператор Type)
Тип данных Decimal
Типы данных

Примеры кода VBA Excel

Автоматическая запись текущей даты и времени
Автоматическое заполнение интервала дат (периода)
Бегущая, ползущая и танцующая строки
Буфер обмена (копирование, вставка, очистка)
Вставка рисунка в ячейку
Выбор случайной ячейки из диапазона
Генератор случайных чисел (Rnd и Randomize)
Генерация документов (реестр, массив, бланк)
Генерация документов и отчетов
Добавление кнопки в контекстное меню
Запуск макроса при изменении ячейки
Изменение свойств пользовательской формы
Имитация движения и кликов мыши
Квадратные ячейки (тетрадные клетки)
Копирование данных с одного листа на другой
Копирование и перемещение файлов
Копирование строк по условию
Номер последней заполненной строки
Определение координат элемента массива
Отбор неповторяющихся значений
Отбор уникальных значений с помощью Collection
Отбор уникальных значений с помощью Dictionary
Открыта или закрыта книга (проверка состояния)
Открытие файла другой программы из кода VBA Excel
Ошибки в таблице – поиск и исправление
Парсинг сайтов, html-страниц и файлов
Перебор листов в книге
Перемещение листа и его отмена
Переход к ячейке по адресу из формулы
Переход по ссылке к ячейке в другой книге
Поиск значения в таблице
Поиск и выделение дубликатов в столбце
Пользовательская автоформа (создание)
Проверка существования листа
Программное создание графика (диаграммы)
Программное создание модуля
Программное создание формы
Работа с умной таблицей
Расчет рабочего времени
Сбор данных из открытых книг
Секундомер в ячейке рабочего листа
Смещение умной таблицы вниз
Создание простого тестового задания
Создание таблицы (умной, обычной)
Создание файлов
Создание, копирование, перемещение папок
Сортировка массива
Сортировка таблицы (диапазона)
Сохранение книг и листов в PDF
Сохранение массива в текстовый файл
Список папок
Список файлов в папке
Сравнение прайс-листов
Сумма прописью (код пользовательской функции)
Удаление книги из собственного кода
Удаление повторяющихся значений в диапазоне ячеек
Удаление пустых строк
Удаление файлов
Учет расхода воды и других ресурсов
Число Пи (значение)
Экспорт и импорт пользовательской формы

Прочее в VBA Excel

Включение режима конструктора
Время работы макроса
Знаки подстановки для шаблонов
Кавычки в коде — двойные и ёлочки
Колонтитулы
Конвертация цвета из Long в RGB
Копирование, перемещение и поворот фигур
Объявление функций в 64-разрядных версиях
Округление чисел (особенности)
Открыть папку (каталог) в проводнике
Параметры и аргументы
Преобразование текста в число
Работа с трехмерными диапазонами
Работа с фигурами (Shapes)
Свойства файла — вывод информации о файле
Свойство Application.WindowState
Смена кодировки UTF-8 на ANSI (Windows-1251)
Смена раскладки клавиатуры
Сохранение файла рабочей книги
Сочетание клавиш для процедуры (макроса)
Стандартная палитра из 56 цветов
Стандартный диалог выбора файлов Application.GetOpenFilename

Работа с Word из кода VBA Excel

Bookmarks – закладки в документе Word
Вставка таблицы Excel в документ Word
Редактирование документов Word
Создание и открытие документов Word
Создание таблиц в документе Word
Управление приложением Word

Редактор VBA Excel

Debug — отладка программы
Вызов процедуры Sub из другой подпрограммы VBA
Защита паролем и снятие защиты проекта VBA
Личная книга макросов (создание, предназначение)
Макросы (запись, запуск, пример)
Модуль (импорт, экспорт, удаление)
Модуль, процедура, форма
Окно Immediate (отладка кода, вычисления)
Перенос кода процедуры и текста на новую строку

События VBA Excel

Событие Worksheet.SelectionChange

Функции в VBA Excel

Изменение значений других ячеек из функции
Пользовательская функция (синтаксис, компоненты)
Проверка переменных и выражений
Работа с текстом (функции)
Удаление лишних пробелов (LTrim, RTrim, Trim)
Функции Left, Mid, Right (вырезать часть строки)
Функции Space, String и StrReverse
Функция Beep API (звуковой сигнал, мелодия)
Функция Choose (синтаксис, компоненты, примеры)
Функция FileDateTime
Функция Filter (фильтрация массива)
Функция Format (синтаксис, параметры, примеры)
Функция FreeFile
Функция Hex
Функция InputBox (синтаксис, параметры, значения)
Функция InStr (синтаксис, параметры, примеры)
Функция InStrRev (синтаксис, параметры, примеры)
Функции Int и Fix
Функция Join (синтаксис, параметры, значения)
Функция MicroTimer
Функция MsgBox (синтаксис, параметры, значения)
Функция Replace (замена подстроки)
Функция Shell
Функция Split (синтаксис, параметры, значения)
Функция StrComp (сравнение строк)
Функция StrConv (смена регистра букв)
Функция Switch (синтаксис, примеры)
Функция Timer (примеры)
Функция Val (примеры)
Функция для вычисления факториала
Функции для работы с датой
Функция преобразования HTML-цвета в число
Функции преобразования типов данных

Циклы в VBA Excel

Цикл Do Until… Loop
Цикл Do While… Loop
Цикл For Each… Next
Цикл For… Next
Цикл While… Wend
Циклы (краткое описание)

Элементы управления в VBA Excel

ComboBox – заполнение поля со списком
ListBox – заполнение списка данными
Заполнение списка ComboBox по условию
Маска ввода в TextBox
Привязка события к элементу управления
Программное раскрытие ComboBox
Размеры и расположение элементов управления
Свойства SelStart, SelLength, SelText (TextBox)
Свойство Picture элементов управления
Сочетания клавиш для кнопок
Удаление элементов ActiveX с рабочего листа
Удаление элементов управления формы с листа
Элемент управления CheckBox (флажок)
Элемент управления ComboBox (поле со списком)
Элемент управления CommandButton (кнопка)
Элемент управления DTPicker
Элемент управления Frame (рамка)
Элемент управления Image
Элемент управления Label (метка, надпись)
Элемент управления ListBox (список)
Элемент управления MultiPage
Элемент управления OptionButton (переключатель)
Элемент управления RefEdit (редактор ссылок)
Элемент управления ScrollBar (полоса прокрутки)
Элемент управления SpinButton (счетчик)
Элемент управления TabStrip
Элемент управления TextBox (текстовое поле)
Элемент управления ToggleButton (выключатель)
Элемент управления TreeView (древовидная структура)

Like this post? Please share to your friends:
  • Все окна excel открываются в одном окне
  • Все объединенные ячейки должны иметь одинаковый размер excel при сортировке
  • Все обозначения word программа
  • Все об электронной таблице табличный процессор excel
  • Все об условном форматировании в excel 2010