Содержание
- Арифметические операторы VBA
- Оператор присваивания (=)
- Оператор сложения (+)
- Оператор вычитания (-)
- Оператор умножения (*)
- Оператор деления (/)
- Целочисленное деление ()
- Деление по модулю (Mod)
- Возведение в степень (^)
- Арифметические операторы VBA
- Арифметические операции в VBA: сложение, вычитание, умножение, деление и возведение в степень
- Сложение
- Вычитание
- Умножение
- Деление
- Целочисленное деление
- Деление по модулю
- Возведение в степень
- Vba excel арифметические операции
Арифметические операторы VBA
Оператор присваивания (=)
Оператор присваивания используется для присваивания результата выражения переменной.
Операция присваивания имеет две синтаксические формы:
1 Let varname = expression
2 varname = expression
varname — любая переменная VBA
expression — любое выражение VBA
Первый вариант операции присваивания использовался в ранних языках программирования Basic. Второй вариант используется в современной версии VBA.
При выполнении оператора присваивания VBA сначала вычисляет выражение справа от оператора присваивания, а затем сохраняет результат выражения в переменной, имя которой находится слева от знака равенства.
X = 5 + 7; Y = X + 5 ; Z = X — Y; A = B; I = I + 1
Начинающим пользователям иногда непонятен смысл последней операции присваивания, когда и в левой, и в правой частях операции стоит одна и та же переменная. В этом случае сначала в промежуточную ячейку памяти помещается результат вычисления выражения правой части оператора присваивания, а затем этот результат присваивается переменной в левой части.
Например, если в операторе присваивания А = А +5, переменная А до операции присваивания содержала значение 7, то после операции она будет содержать значение 12 (7+5).
- Можно присваивать любую численную переменную (или выражение) любой другой переменной численного типа (или переменной типа Variant);
- Если присваивается численное выражение типизированной переменной с меньшей точностью (например, Double — Long), VBA округляет значение выражения для совпадения с точностью переменной, принимающей новое значение;
- Если переменной типа String присваивается переменная типа Variant, содержащая число, VBA автоматически преобразует это число в строку.
Оператор сложения (+)
Оператор сложения выполняет простое сложение. Оба операнда должны быть численными выражениями или строками, которые VBA может преобразовать в число. Оператор сложения можно также использовать для выполнения арифметических операций с данными типа Date.
Тип данных результата выражения сложения обычно тот же, что и наиболее точный тип в этом выражении. Но, есть исключения:
- Результатом сложения типа Single и Long будет Double;
- Результатом сложения типа Date с любым другим типом данных всегда будет Date;
- Если результат превышает диапазон типа Integer, то VBA преобразует его в Long;
- Если результат превышает типы Long, Single, Date, то VBA преобразует его в Double;
- Если любой операнд в выражении сложения является Null, то результатом выражения сложения также будет Null.
Напомним порядок увеличения точности для численных типов данных: Byte, Integer, Long, Single, Double, Currency.
Следует сказать, что надо четко понимать как VBA преобразует типы данных в результате арифметических операций. Это поможет в дальнейшем избежать многих «ненужных» ошибок при написании кода.
Оператор вычитания (-)
Оператор вычитания выполняет две задачи: используется для вычитания одного числа из другого; обозначает унарный минус (это знак минус, который помещается пред числом для указания того, что это отрицательное число). Поместить унарный минус перед переменной или выражением означает то же, что умножить это число на -1.
Оба операнда в выражении вычитания должны быть численными переменными (выражениями) или строковыми выражениями, которое VBA может преобразовать в число. Можно использовать оператор вычитания для работы с датами.
VBA использует те же правила для определения типа данных результата выражения вычитания, что и для выражений, использующих оператор сложения. Но, есть дополнение:
Если оба операнда в выражении являются типом Date, то результат выражения будет иметь тип Double.
Оператор умножения (*)
Оператор умножения перемножает два числа — результатом выражения умножения является произведение двух операндов. Оба операнда в выражении умножения должны быть численными выражениями или строками, которые VBA может преобразовать в число.
VBA следует тем же правилам для определения типа данных результата выражения умножения, что и для выражений, использующих оператор сложения. В выражениях умножения все переменные Variant, которые содержат значения типа Date, преобразуются в численные значения.
Оператор деления (/)
Оператор деления с плавающей точкой выполняет обычное арифметическое деление своих операндов.
В выражениях деления первый операнд делится на второй операнд — результатом деления является частное.
Оба операнда в выражении деления с плавающей точкой должны быть численными выражениями или строками, которые VBA может преобразовать в число.
Если хотя бы один операнд в выражении деления имеет тип Null, то результат деления также будет Null.
Типом данных операции деления с плавающей точкой является Double, за исключением:
- Оба операнда в выражении деления имеют тип Integer или Single — результат Single;
- Если результат выражения не переполняет диапазон значений для типа Single.
Целочисленное деление ()
Целочисленное деление отличается от деления с плавающей точкой тем, что его результатом всегда есть целое число без дробной части.
Оба операнда в выражении целочисленного деления должны быть численными выражениями или строками, которые VBA может преобразовать в число.
Перед выполнением операции целочисленного деления VBA округляет каждый операнд до числа типа Integer или Long (такой же тип имеет и результат целочисленного деления).
VBA отбрасывает (но не округляет!) любой дробный остаток результата выражения целочисленного деления. Например, выражения 225 и 245 будут иметь один и тот же результат = 4.
Если хотя бы один операнд в выражении целочисленного деления имеет тип Null, то результат деления также будет Null.
Деление по модулю (Mod)
Деление по модулю как бы дополняет целочисленное деление. В делении по модулю выражение возвращает только остаток операции деления как целое.
22 Mod 5 = 2
24 Mod 5 = 4
25 Mod 5 = 0
Остальные свойства деления по модулю идентичны целочисленному делению.
Возведение в степень (^)
Оператор возведения в степень возводит число в степень.
Оба оператора в выражении возведения в степень должны быть численными выражениями или строками, которые VBA может преобразовать в числа.
Операнд слева от оператора возведения в степень может быть отрицательным числом только, если операнд справа является целым.
Результат выражения имеет тип Double.
Если хотя бы один операнд в выражении имеет тип Null, то результат возведения в степень также будет Null.
Подведем итог вышеизложенному:
Арифметические операторы VBA
Оператор | Синтаксис | Описание |
+ | A + B | Сложение: складывает А и В. |
— | A — B | Вычитание: вычитает из А В. |
* | A * B | Умножение: перемножает А на В. |
/ | A / B | Деление: делит А на В. |
A B | Целочисленное деление: делит А на В, отбрасывая дробную часть. Результат — целое число. | |
Mod | A Mod B | Деление по модулю: делит А на В, возвращая только остаток операции деления как целое число. |
^ | A ^ B | Возведение в степень: возводит А в степень В. |
В начало страницы
В начало страницы
Источник
Арифметические операции в VBA: сложение, вычитание, умножение, деление и возведение в степень
Подробно рассмотрим то, как VBA выполняет такие арифметические операции, как сложение, вычитание, умножение, деление и возведение в степень, а также особые операции, такие как целочисленное деление и деление по модулю. Ниже, в таблице, представлены знаки операций, используемые при написании арифметических VBA-выражений.
Выражение — это значение либо группа значений, выражающая отдельное значение. Результат выражения — одно значение определенного типа данных. Знаки (обозначения) операций используются для действий над определенными значениями в выражениях. Для присваивания результата выражения переменной используется оператор присваивания (=), который сохраняет любое значение, представленное выражением справа от оператора присваивания в ячейке памяти, на которую ссылается переменная слева от этого оператора.
Во всех операциях приведенных ниже, оба операнда должны быть численными выражениями или строками, которые VBA может преобразовать в число.
Сложение
Знак (+) используется для выполнения операции сложения. Слагаемые должны быть численными выражениями, строками, которые VBA может преобразовать в числа либо датами, с которыми также возможны арифметические действия.
Тип данных результата выражения сложения обычно тот же, что и наиболее точный тип в этом выражении за некоторыми исключениями. Все исключения из этого правила наглядно представлены в примерах.
Вычитание
Знак (-) используется для выполнения операции вычитания, а также для обозначения отрицательных чисел (когда ставится перед переменной или выражением и означает тоже самое, что и умножение на -1). Знак минуса, который помещают перед числом для обозначения того, что число отрицательное, называют унарным минусом.
Для определения типа данных результата выражения вычитания VBA следует тем же правилам, что и для выражений, использующих знак операции сложения, но имеются два дополнительные правила.
Правило 1. Если в выражении вычитания один из операндов является типом Date, то и результат выражения будет иметь тип Date.
Правило 2. Если в выражении вычитания оба операнда являются типом Date, то результат выражения будет иметь тип Double.
Умножение
Знак (*) используется для выполнения операции умножения, результатом этой операции является произведение операндов. Для определения типа данных результата выражения умножения VBA использует те же правила, что и для выражений, использующих сложение. В выражениях умножения все переменные Variant, содержащие значения типа Date, преобразуются в численные значения.
Деление
Знак (/) используется для выполнения операции деления, этот знак называют знаком деления действительных чисел. В выражениях деления один операнд делится на другой, а результатом деления является частное.
Если любой операнд в выражении деления имеет значение Null, то результатом выражения также будет Null. Тип данных в выражениях деления действительных чисел обычно Double, но есть и исключение.
Если в выражении деления оба операнда имеют тип Integer или Single, то результат выражения деления имеет тип Single. Если результат переполняет диапазон для типа Single, то VBA преобразует его в тип Double.
Целочисленное деление
Знак () используется для выполнения операции целочисленного деления, при котором результатом деления всегда является целое число без дробной части. VBA не округляет частное целочисленного деления, а просто укорачивает его до целого числа, отбрасывая дробную часть.
Тип данных результата выражения целочисленного деления — либо Integer, либо Long. VBA использует наименьший тип данных, который соответствует результату выражения.
Деление по модулю
Знак (Mod) используется для выполнения операции деления по модулю. При делении по модулю выражение возвращает только остаток от деления как целое.
Доступное для понимания объяснение этой математической операции приведено на одном из форумов программистов. Приведу цитату оттуда: «представь, что есть полная 50л канистра и 3л банка. И ты начинаешь вычерпывать из канистры банкой воду (набирать можно только полную банку). 48л вычерпал, осталось 2 литра. Это и есть остаток от деления 50 на 3 по модулю.» Другими словами 50 Mod 3 возвращает 2.
Тип данных результата выражения деления по модулю — это Integer или Long. VBA использует наименьший тип, который подходит для результата выражения.
Возведение в степень
Знак (^) используется для выполнения операции возведения в степень числа или выражения. Показатель степени показывает, сколько раз число или выражение должно быть умножено на само себя.
Источник
Vba excel арифметические операции
Арифметические операции в VBA: сложение, вычитание, умножение, деление и возведение в степень
Опубликовано: 08 октября 2012
Подробно рассмотрим то, как VBA выполняет такие арифметические операции, как сложение, вычитание, умножение, деление и возведение в степень, а также особые операции, такие как целочисленное деление и деление по модулю. Ниже, в таблице, представлены знаки операций, используемые при написании арифметических VBA-выражений.
Выражение — это значение либо группа значений, выражающая отдельное значение. Результат выражения — одно значение определенного типа данных. Знаки (обозначения) операций используются для действий над определенными значениями в выражениях. Для присваивания результата выражения переменной используется оператор присваивания (=), который сохраняет любое значение, представленное выражением справа от оператора присваивания в ячейке памяти, на которую ссылается переменная слева от этого оператора.
Во всех операциях приведенных ниже, оба операнда должны быть численными выражениями или строками, которые VBA может преобразовать в число.
Знак (+) используется для выполнения операции сложения. Слагаемые должны быть численными выражениями, строками, которые VBA может преобразовать в числа либо датами, с которыми также возможны арифметические действия.
1 . Sub Slozhenie()
2. ‘Пример арифметического выражения со знаком «+»
3. Dim A1, A2, A3 As Integer ‘объявление переменных
4. A1=1 ‘присваивание значения 1 переменной А1
5. A2=2 ‘присваивание значения 2 переменной А2
6. A3=A1+A2 ‘присваивание результата сложения переменной А3
7. MsgBox A3 ‘вывод А3 в диалоговом окне
Тип данных результата выражения сложения обычно тот же, что и наиболее точный тип в этом выражении за некоторыми исключениями. Все исключения из этого правила наглядно представлены в примерах.
Знак (-) используется для выполнения операции вычитания, а также для обозначения отрицательных чисел (когда ставится перед переменной или выражением и означает тоже самое, что и умножение на -1). Знак минуса, который помещают перед числом для обозначения того, что число отрицательное, называют унарным минусом.
Для определения типа данных результата выражения вычитания VBA следует тем же правилам, что и для выражений, использующих знак операции сложения, но имеются два дополнительные правила.
Правило 1. Если в выражении вычитания один из операндов является типом Date, то и результат выражения будет иметь тип Date.
Правило 2. Если в выражении вычитания оба операнда являются типом Date, то результат выражения будет иметь тип Double.
1 . Sub Vychitanie()
2. ‘Пример арифметического выражения со знаком «-«
3. Dim D1, D2 As Date ‘объявление переменных
4. D1=Now ‘присваивание значения текущей даты переменной D1
5. D2=Now-5 ‘присваивание значения даты переменной D2
6. MsgBox TypeName(D2), vbOKOnly, «Now-5»
7. MsgBox TypeName(D1-D2), vbOKOnly, «D1-D2»
Знак (*) используется для выполнения операции умножения, результатом этой операции является произведение операндов. Для определения типа данных результата выражения умножения VBA использует те же правила, что и для выражений, использующих сложение. В выражениях умножения все переменные Variant, содержащие значения типа Date, преобразуются в численные значения.
1 . ‘Пример арифметических выражений со знаком «*»
2. 4*10 ‘умножение 4 на 10
3. MyVar*2 ‘умножение MyVar на 2
4. MyVar*OtherVar ‘умножение MyVar на OtherVar
Знак (/) используется для выполнения операции деления, этот знак называют знаком деления действительных чисел. В выражениях деления один операнд делится на другой, а результатом деления является частное.
1 . ‘Пример арифметических выражений со знаком «/»
2. 10/4 ‘деление 10 на 4
3. MyVar/2 ‘деление MyVar на 2
4. MyVar/OtherVar ‘деление MyVar на OtherVar
Если любой операнд в выражении деления имеет значение Null, то результатом выражения также будет Null. Тип данных в выражениях деления действительных чисел обычно Double, но есть и исключение.
Если в выражении деления оба операнда имеют тип Integer или Single, то результат выражения деления имеет тип Single. Если результат переполняет диапазон для типа Single, то VBA преобразует его в тип Double.
Знак () используется для выполнения операции целочисленного деления, при котором результатом деления всегда является целое число без дробной части. VBA не округляет частное целочисленного деления, а просто укорачивает его до целого числа, отбрасывая дробную часть.
Тип данных результата выражения целочисленного деления — либо Integer, либо Long. VBA использует наименьший тип данных, который соответствует результату выражения.
1 . ‘Пример арифметических выражений со знаком «»
2. 104 ‘деление 10 на 4; возвращает значение 2
3. MyVar2 ‘деление MyVar на 2
4. MyVarOtherVar ‘деление MyVar на OtherVar
Деление по модулю
Знак (Mod) используется для выполнения операции деления по модулю. При делении по модулю выражение возвращает только остаток от деления как целое.
1 . ‘Пример арифметических выражений со знаком «Mod»
2. 8 Mod 2 ‘возвращает значение 0;
3. 5.1 Mod 3 ‘возвращает значение 2;
4. 6 Mod MyVar ‘если MyVar содержит 3, возвращает 0
Доступное для понимания объяснение этой математической операции приведено на одном из форумов программистов . Приведу цитату оттуда: «представь, что есть полная 50л канистра и 3л банка. И ты начинаешь вычерпывать из канистры банкой воду (набирать можно только полную банку). 48л вычерпал, осталось 2 литра. Это и есть остаток от деления 50 на 3 по модулю.» Другими словами 50 Mod 3 возвращает 2.
Тип данных результата выражения деления по модулю — это Integer или Long. VBA использует наименьший тип, который подходит для результата выражения.
Возведение в степень
Знак (^) используется для выполнения операции возведения в степень числа или выражения. Показатель степени показывает, сколько раз число или выражение должно быть умножено на само себя.
1 . ‘Пример арифметического выражения со знаком «^»
2. 3 ^ 3 ‘это то же, что и 3*3*3, возвращает значение 27
Источник
Оператор присваивания
Оператор
присваивания
значения переменной использует символ
“=“ и имеет следующий синтаксис:
<имя переменной>
= <арифметическое выражение >
Приведем пример
использования оператора присваивания:
х = 5*a
+ log(a
+ 0.5)-a^3
Ввод и вывод информации.
Первое, что нужно
в программе – это определение способа,
которым пользователь будет вводить
информацию. Существует множество
способов пользовательского ввода.
Один из них –диалоговый
ввод.
Диалоговый ввод
Может осуществляться
с помощью функции InputBox,
которая при выполнении в программе
выводит на экран свое собственное окно.
Например, при выполнении следующей
строки программного кода:
a=
InputBox(“Введите
фамилию”)
на экране появится диалоговое
окно, в котором будет записан текст,
заключенный в кавычки с курсором в
полосе ввода значения. После чего
необходимо ввести запрашиваемое в окне
значение и нажать клавишу ввода или
щелкнуть мышью по кнопке “Ок”.
При
этом возвращаемое функцией InputBox
значение имеет тип string.
Поэтому для диалогового ввода значения
числовой переменной в программе
необходимо дополнительно преобразовать
получаемое значение к числовому типу
функцией преобразования типов данных
от строкового к числовому — функцией
Val.
Например, для ввода значения числа 5,25
для переменной b
необходимо записать следующую строку
программного кода:
b=Val(InputBox(“Введите
значение b”))
Во
многих случаях VBA
может интерпретировать тип данных и
перестраивать его по смыслу использования
переменных при обработке информации,
если тип данных не определен оператором
dim. Однако всегда предпочтительнее
заранее определить требуемый тип данных,
т.к. интерпретация типа VBA
может оказаться и некорректной, и
привести к неправильным результатам.
При
вводе вещественного числа целая часть
отделяется от дробной точкой.
Ввод
числа 1,210-6
осуществляется как 1.2Е-6
Ввод из ячейки листа Excel
Присвоение
переменной x
значения из ячейки листа Excel
может осуществляться с помощью методов
Range
и Cell,
которые возвращают ссылку на отдельную
ячейку:
x
= Worksheets(«Лист1»).Range(«A1»)
или
x
= Worksheets(«Лист1»).Cells(1,
1)
где
– Worksheets(«Лист1»)
– рабочий лист Excel
Range(«A1»)
– ссылка на ячейку A1(абсолютная
ссылка)
Cells(1,
1) – для указания адреса ячейки используют
номер строки и номер столбца (относительная
ссылка)
Пример:
Private
Sub CommandButton5_Click()
x
= Worksheets(«Лист1»).Range(«A1»)
MsgBox
x
End
Sub
Вывод результатов
Для
вывода результатов в VBА
существуют различные способы.
Наиболее
просто вывести значение переменной
можно с помощью функции вывода MsgBox,
которая при выполнении активизирует
свое собственное окно сообщений на
экране. Например, значение переменной
b можно вывести на экран в специальное
генерируемое этой функцией окно, записав
в программе строку
MsgBox(b)
Для
продолжения работы программы необходимо
нажать клавишу ввода либо щелкнуть
мышью на кнопке “Ok”.
С
помощью функции MsgBox
можно выводить и произвольные текстовые
сообщения на экран, при этом выводимое
сообщение должно быть заключено в
кавычки. Например, в результате выполнения
строки кода
MsgBox(«Деление
на нуль»)
на
экране появится следующее окно сообщений:
Число,
выводимое в окно можно форматировать
(указывать количество знаков до и после
запятой). Для этого используется функция
Format(x,
“##.##”), где x
переменная, ##.## – формат числа.
MsgBox
(Format(x,
“##.##”))
Для
вывода нескольких значений в одно окно
используется операция конкатенации &,
например,
MsgBox
(«Значение x=»
& x)
MsgBox
((«Значение x=»
& _ Format(x,
“##.##”))
Можно
осуществлять вывод в ячейку листа Excel
используя абсолютную ссылку:
Worksheets(«Лист1»).Range(«A3»)
= x
или
относительную:
Worksheets(«Лист1»).Cells(5,
1) = x
Пример1:
Private
Sub CommandButton6_Click()
x
= 10
Worksheets(«Лист1»).Range(«A3»)
= x
x
= 5
Worksheets(«Лист1»).Cells(5,
1) = x
End
Sub
Пример
2:
Для
x=1,5
a=3,75
m=0.510-4
вычислить выражения:
Оформим
Лист2
согласно
образцу:
Введем
в ячейку G24
следующую формулу (используя функции
Excel):
=0,5*КОРЕНЬ((C17*C18)*ABS(1-C19*C19))
А
в ячейку H24:
=COS(LN(ABS(G24))/(2+G24))
Для
кнопки «Вычислить» напишем следующий
текст программы:
Private
Sub CommandButton1_Click()
Dim
x As Single, a As Single, m As Single, w As Single, z As Single
x
= Worksheets(«Лист2»).Range(«c17»)
a
= Worksheets(«Лист2»).Range(«c18»)
m
= Worksheets(«Лист2»).Range(«c19»)
w
= 0.5 * Sqr(x * a * Abs(1 — m * m))
z
= Cos(Log(Abs(w)) / (2 + w))
Worksheets(«Лист2»).Range(«g25»)
= w
Worksheets(«Лист2»).Range(«h25»)
= z
End
Sub
…
Здесь
ввод и вывод результата организован из
ячеек рабочего листа и в ячейки рабочего
листа.
Если
использовать относительные ссылки, то
текст программы будет следующим:
Private
Sub CommandButton1_Click()
Dim
x As Single, a As Single, m As Single, w As Single, z As Single
x
= Worksheets(«Лист1»).Cells(17,
3)
a
= Worksheets(«Лист1»).Cells(18,
3)
m
= Worksheets(«Лист1»).Cells(19,
3)
w
= exp(x) * a * (1 — m ^ 2)
z
= Sin(w / (2 + w))
Worksheets(«Лист1»).Cells(24,
7) = w
Worksheets(«Лист1»).Cells(24,
= z
End
Sub
Можно
организовать ввод и по-другому – с
клавиатуры, а вывод – в диалоговое окно.
Тогда
текст
программы
будет
следующим:
Private
Sub CommandButton2_Click()
Dim
x As Single, a As Single
Dim
m As Single, w As Single
Dim
z As Single
x
= Val(InputBox(“Введите
x “))
a
= Val(InputBox(“Введите
a”))
m=
Val(InputBox(“Введите
m”))
w
= 0.5*Sqr(x*a*abs(1 — m * m))
z
= cos(log(w)/( 2 + w))
MsgBox
(“w=” & w
)
MsgBox
(“z=”
& z
)
End
Sub
Для
очистки ячеек рабочего листа используют
метод Clear
объектов Cells()
и Range().
Для
применения метода к объекту нужно
записать
Объект.Метод
Т.о.
программный код кнопки «Очистить» будет
следующий:
Private
Sub CommandButton4_Click()
Worksheets(«Лист2»).Range(«g25»).Clear
Worksheets(«Лист2»).Range(«h25»).Clear
End
Sub
Если
необходимо очистить все ячейки рабочего
листа, то нужно записать:
Private
Sub CommandButton4_Click()
Worksheets(«Лист2»).Сells.Clear
‘очистка
всех
ячеек
End
Sub
Свойства
ячеек можно менять программно, например,
для изменения шрифта, выводимого в
ячейки Листа Excel
свойства:
Worksheets(«Лист1»).Range(«a2»).Font.Name
= «Times New Roman»
Worksheets(«Лист1»).Range(«a2»).Font.Size
= 14
Отладка
программы
При
возникновении ошибки во время запуска
программы (например, деление на 0)
происходит прерывание выполнения
программы и вывод сообщения о типе
ошибки. При этом можно выбрать режим
остановки программы End
или перехода в окно отладки программы
Debug,
при этом строка с ошибкой или процедура,
где возникла ошибка, будет подсвечена
желтым цветом.
Для
исправления ошибки нужно прервать
программу, нажав кнопку Reset
на ПИ редактора VBA,
исправить ошибку и запустить программу
заново. Или исправить ошибку, затем
продолжить выполнение программы, нажав
кнопку
Continue(Run).
Сохранение
проекта Excel:
Кнопка MS
OfficeСохранить
как…Книга Excel
с поддержкой макросов
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Введение[править]
Для того, чтобы войти в надстройку Visual Basic for Applications и использовать её, нажмите Alt+F11 (более универсальный вариант) или выберите команду
Вид → Макросы (→ Макросы) → Создать. При этом в поле «Находится в» должно стоять значение «Эта книга» (текущая открытая книга) или «Название_имеющейся_книги», чтобы надстройка могла быть связана с данной книгой, используемой в настоящий момент.
Пусть мы создали макрос с именем My в книге Книга1. Появится окно редактирования и отладки программ, приведённое на рис. 3. В папке Modules мы увидем компонент Module1, в котором находится процедура My. Первоначально тело процедуры не заполнено и вся процедура выглядит так:
Мы создали модуль Module1, содержащий процедуру My, который можно использовать в любой книге. Мы можем также создать модуль внутри данной книги. Для этого необходимо два раза нажать на меню «ЭтаКнига» («ThisWorkbook»).
Создадим внутри книги процедуру Hello_World, которая выводит типичное для программистов сообщение «Hello World!» (по-русски — «Здравствуй, мир!»)
В поле General (Общая область) введём следующий код:
Sub Hello_World() MsgBox "Hello World!" End Sub
Выполним программу. Для этого необходимо нажать клавишу F5 либо кнопку со стрелкой на панели инструментов Visual Basic. На экране мы увидим окно с надписью Hello World! и кнопкой ОК. Нажмём ОК — окно исчезнет, программа завершит свою работу и мы вернёмся в окно редактирования Visual Basic.
Переменные[править]
Ситуация с переменными в VBA похожа на ситуацию в языке программирования Pascal. Однако в Visual Basic, в отличие от Паскаля, можно не объявлять переменные до начала их использования в программе. VBA сам определяет тип переменной, когда встречает её в программе. Однако это не оптимальный вариант. Прежде всего, программа будет работать медленнее. Более того, если будет ошибка в имени переменной, то Visual Basic создаст новую переменную, а не выведет сообщение об ошибке. Для того чтобы нельзя было использовать переменных без их описания, мы должны в начало программы поместить оператор Option Explicit. Если после этого VBA обнаружит не объявленную ранее переменную, то на экран будет выведено сообщение «Variable not defined» («Переменная не определена»).
Описание переменных задаётся следующим образом:
Dim <имя_переменной> As <тип_переменной>
Примеры:
Dim i As Integer Dim S As String Dim My_date As Date, num As Single
В примере 3 было объявление нескольких переменных в одной строке
Типы переменных[править]
- Boolean (логический тип). Только два значения: True или False. 2 байта
- Byte (байтовый). Целые числа в диапазоне от 0 до 255. 1 байт
- Integer (целый). Целочисленные значения в диапазоне от -32768 до +32767. 2 байта
- Long (длинное целое). Целочисленные значения в диапазоне от -2147483648 до +2147483647. 4 байта
- Single (числа с плавающей точкой одинарной точности). Численные значения в диапазоне от -3,402823E+38 до +3,402823E+38. 4 байта
- Double (числа с плавающей точкой двойной точности). Значения в диапазоне от -1,797693313486232D+308 до +1,797693313486232D+38. 8 байт
- Currency (денежный). Денежные значения от -$922337203685477,5808 до $922337203685477,5808. 8 байт
- Date/Time (дата/время). Значения даты и времени. Дата может находиться в диапазоне от 1 января 100 года до 31 декабря 9999 года. 8 байт
- String (строковый). Строки, состоящие из 0-654000 алфавитно-цифровых символов. 1 байт на символ
- Variant (общий). Для всех типов данных. 16 байт
Преобразование типов[править]
Для преобразования переменных одного типа в переменные другого типа есть набор функций с названиями, которые образуются следующим образом: (буква C — латинская)
C<полное или сокращённое имя типа>
Пример:
Dim N As Integer Dim S As String S = "42.66" N = CInt(S) MsgBox N
После выполнения данного кода на экран выведется число 42.
Таблица функций преобразования типов:
Cbool | Преобразование к типу Boolean |
CCur | Преобразование к типу Currency |
CDate | Преобразование к типу Date |
CLng | Преобразование к типу Long |
CDbl | Преобразование к типу Double |
CInt | Преобразование к типу Integer |
CSng | Преобразование к типу Single |
CStr | Преобразование к типу String |
Оператор присваивания. Арифметические и логические выражения[править]
Оператором присваивания в языке Visual Basic, как и во многих других языках, является знак =
(равно), а не :=
, как в языке Pascal.
В VB в арифметических выражениях используются следующие арифметические операции:
+ | сложение |
− | вычитание |
* | умножение |
/ | деление |
деление нацело | |
Mod | целочисленный остаток от деления |
В логическом выражении используются логические операторы AND, OR, NOT. Следует иметь ввиду, что логические операторы имеют более низкий приоритет, чем операции отношения.
Пример:
5 > 3 AND 7 < 10 NOT 6 > 5 AND 0 < 2 OR 7 <= 2
Значение первого выражения будет True, а второго — False.
Константы[править]
Если при написании каких-то программ в Visual Basic требуется использовать постоянно повторяющиеся числа, даты, строки, то рационально использование констант. Вместо постоянных значений в тексте программы можно использовать имена, которые обозначают эти значения.
Общий вид описания констант: Const <имя константы> = <выражение>
Пример использования константы:
Const Pi = 3.1415926 Dim L As Double, Dim Rad As Double … L = 2*Pi*Rad
Visual Basic задаёт тип константы автоматически в зависимости от значения выражения. Если необходимо задать конкретный тип константы, то используется следующая структура:
Const <имя константы> As <имя типа> = <выражение>
Пример задания типа константы:
Const My_const As Byte = 100 Const My_date As Date = #01/01/2001#
Константы можно определять через константы, определённые ранее:
Const A = 20 Const B = A * 3
Операторы ввода и вывода[править]
Как уже упоминалось выше, MsgBox — процедура, которая используется для вывода информации на экран. Единственный параметр строкового типа — сообщение, которое необходимо вывести на экран. Тем не менее, если в качестве параметра указана переменная другого типа, то VBA сам преобразует её в тип строки. Нужно помнить, что процедура принимает ровно один параметр, то есть в процедуре MsgBox не может быть более одной переменной в списке вывода.
Чтобы вынести несколько переменных, их нужно преобразовать к строковому типу и объединить в одну строку путём конкатенации (сложения) строк. Для сложения строк мы можем использовать как знак &, так и знак +, как в языке Pascal.
Например, следующая процедура
Sub my() Dim A As String A = "Товар стоит " & 1000 & " рублей" MsgBox A End Sub
выведет на экран текст «Товар стоит 1000 рублей».
Чтобы, наоборот, ввести информацию, мы можем использовать функцию InputBox(<текст>). В качестве параметра <текст> указывается строка — тот текст, который мы хотим видеть в окне ввода качестве подсказки.
Задачи[править]
Задача 1[править]
С клавиатуры вводится число типа Double. Вычислить косинус данного числа в градусах и вывести ответ на экран в виде: Cos <число> градусов = <результат>
. Например, при вводе числа 60 результат равняется 0.5. Для ввода константы Pi (Пи) воспользуетесь выражением: WorksheetFunction.Pi
Задача 2[править]
С клавиатуры вводится целое четырёхзначное число. Найти сумму его цифр и вывести ответ в виде: Сумма цифр <число> равняется <результат>
Задача 3[править]
С клавиатуры вводятся две строки. Вывести на экран слово False, если хотя бы одна из строк пустая, либо если первая строка больше второй, и слово True во всех остальных случаях.
Решение задач[править]
Задача 1[править]
Решение
Sub My1() Dim X As Double Dim Res As Double X = InputBox("Введите значение угла в градусах:") Res = Cos(X * WorksheetFunction.Pi / 180) MsgBox ("Cos " & X & " градусов = " & Res) End Sub
Задача 2[править]
Решение
Sub My2() Dim X As Integer Dim T As Byte 'для экономии памяти вместо Integer Dim H As Byte Dim D As Byte Dim O As Byte Dim Summa As Byte X = InputBox("Введите целое четырёхзначное число:") T = X 1000 H = (X - 1000 * T) 100 D = (X - 1000 * T - 100 * H) 10 O = X Mod 10 Summa = T + H + D + O MsgBox ("Сумма цифр числа " & X & " равна " & Summa) End Sub
Задача 3[править]
Решение
Sub My3() Dim S1 As String Dim S2 As String Dim Res As Boolean S1 = InputBox("Введите первую строку:") S2 = InputBox("Введите вторую строку:") Res = Not ((S1 = "") Or (S2 = "") Or (S1 > S2)) MsgBox (Res) End Sub
Присваивание значений
Присваивание значений
Значения переменным присваиваются с помощью обыкновенного знака равенства. Например, чтобы поместить число 3 в переменную с именем intC, напечатайте intC = 3
В VBA оператор присваивания представляет собой связанную знаком равенства конструкцию, с переменной слева от него и выражением, определяющим значение переменной, справа. В приведенном выше примере выражение представляет собой просто число 3. Такие явно указанные значения называются буквальными значениями. (Выражения будут обсуждаться ниже, в разделе Выражен-и-я.)
Взгляните на следующий оператор присваивания:
strQuot e = Не спрашивай, что я сделал для страны — _
спроси о том, что страна сделала для меня.
В данном случае оператор присваивает текст справа от знака равенства переменной strQuot e. Как и раньше, информация во входящем в этот оператор выражении представляет собой буквальные значения — реальный текст, помещаемый в переменную. Но оператор разбит на две строки, поэтому и текстовое выражение разбито на две отдельные строки. Знак (амперсанд) дает указание VBA соединить эти строки вместе.
Здесь я просто пытаюсь показать, что выражения часто имеют несколько компонентов.
Но независимо оттого, из какого числа компонентов складывается выражение, VBA сначала вычисляет результирующее значение, а уж затем присваивает это значение переменной.
Ясно, что до момента реального выполнения оператора присваивания его утверждение не является фактом. В математике равенством 2+2=4 на самом деле утверждается, что значение слева от знака равенства равно значению справа.
В VBA оператор присваивания заставляет переменную быть равной значению выражения. В дальнейшем новый оператор присваивания может изменить значение этой переменной в любое время.
Читайте также
11.7.4 Присваивание IP-адресов
11.7.4 Присваивание IP-адресов
Администратор конфигурирует сервер BOOTP для присваивания системам IP-адресов посредством ручного создания таблицы отображения на IP-адрес комбинации типа оборудования и аппаратного адреса клиента. Кодирование типов оборудования определяется
11.9.1 Присваивание IP-адресов
11.9.1 Присваивание IP-адресов
В DHCP поддерживаются три типа присвоения адресов:? Ручное, когда IP-адрес вводится на сервере и назначается клиенту постоянно? Автоматическое, когда IP-адрес выбирается сервером из пула доступных адресов и назначается клиенту
R.18.3.3 Присваивание указателю this
R.18.3.3 Присваивание указателю this
Присваивая определенные значения указателю this, пользователь мог управлять выделением памяти для объекта некоторого класса. В конструкторе до использования членов класса можно было с помощью такого присваивания реализовать свой алгоритм
8.1.2. Доступ к элементам массива и присваивание им значений
8.1.2. Доступ к элементам массива и присваивание им значений
Получить ссылку на элемент и присвоить ему значение можно с помощью методов класса [] и []= соответственно. Каждый из них принимает один целочисленный параметр — либо пару целых чисел (начало и конец), либо диапазон.
Простое присваивание
Простое присваивание
Операция простого присваивания обозначается знаком =. Значение правого операнда присваивается левому операнду. Левый операнд должен быть модифицируемым L-выражением. При присваивании выполняются правила преобразования типов, описанные в разделе
Составное присваивание
Составное присваивание
Операция составного присваивания состоит из простой операции присваивания, скомбинированной с какой-либо другой бинарной операцией. При составном присваивании вначале выполняется действие, специфицированное бинарной операцией, а затем
6.6.2. Присваивание и обмен
6.6.2. Присваивание и обмен
Что происходит, если мы присваиваем один контейнер другому? Оператор присваивания копирует элементы из контейнера, стоящего справа, в контейнер, стоящий слева от знака равенства. А если эти контейнеры имеют разный размер? Например:// svecl
7.9.2. Инициализация и присваивание
7.9.2. Инициализация и присваивание
Вспомним, что имя массива без указания индекса элемента интерпретируется как адрес первого элемента. Аналогично имя функции без следующих за ним скобок интерпретируется как указатель на функцию. Например, при вычислении
14.7. Почленное присваивание A
14.7. Почленное присваивание A
Присваивание одному объекту класса значения другого объекта того же класса реализуется почленным присваиванием по умолчанию. От почленной инициализации по умолчанию оно отличается только использованием копирующего оператора присваивания
17.6. Почленная инициализация и присваивание A
17.6. Почленная инициализация и присваивание A
При проектировании класса мы должны позаботиться о том, чтобы почленная инициализация (см. раздел 14.6) и почленное присваивание (см. раздел 14.7) были реализованы правильно и эффективно. Рассмотрим связь этих операций с
4.2. Присваивание значений переменным
4.2. Присваивание значений переменным
=оператор присваивания (пробельные символы до и после оператора — недопустимы)
Не путайте с операторами сравнения = и -eq!Обратите внимание: символ = может использоваться как в качестве оператора присваивания, так и в качестве
6.6 Присваивание и Инициализация
6.6 Присваивание и Инициализация
Рассмотрим очень простой класс строк string:struct string (* char* p; int size; // размер вектора, на который указывает pstring(int sz) (* p = new char[size=sz]; *) ~string() (* delete p; *) *);Строка – это структура данных, состоящая из вектора сиволов и длины этого вектора. Вектор
14.3.1. Присваивание значений переменным среды
14.3.1. Присваивание значений переменным среды
Для присваивания значений переменным среды применяется команда:VARIABLE_NAME=значение; export VARIABLE_NAMEТочка с запятой между двумя командами выступает в роли разделителя команд. К аналогичному результату можно прийти следующим
Присваивание (Assignment)
Присваивание (Assignment)
Инструкция присваивания записывается в виде:x := eгде x — сущность, допускающая запись (writable), а e — выражение совместимого типа. Такая сущность может быть:[x]. неконстантным атрибутом включающего класса;[x]. локальной сущностью включающей подпрограммы. Для