Аннотация: Лекция посвящена описанию основных конструкций и принципов VBA. Она является вводной лекцией по общим приемам программирования на VBA.
5.1. Синтаксические описания
Синтаксис языка программирования — это правила написания программ.
Рассмотрим пример — возьмем из справочной системы описание команды. Мы пока не будем вдаваться в смысл ключевых слов (перед нами — описание оператора цикла ), приведенных здесь, остановимся на основных частях описания.
For counter = start To end [Step step] [statements] [Exit For] [statements] Next [counter]
В синтаксических описаниях VBA жирным шрифтом выделены ключевые слова языка, курсивом даны названия переменных и других элементов языка . В квадратных скобках располагаются необязательные элементы – то есть такие элементы, без описания которых можно обойтись. Например, в приведенном описании блоки [statements] будут содержать в себе «полезную нагрузку» цикла – операторы , которые будут выполняться многократно, однако цикл будет работать и без них.
Объектные переменные: Пример с Workbook — Worksheet — Range — Новый курс VBA (4)
Элементы, которые допускают альтернативный выбор, разделяются знаком » | «. Например, такая запись : » one | two » обозначает » one или two».
Ниже мы будем останавливаться на существенно важных особенностях тех или иных конструкций. Если вам понадобятся подробности — вы сможете найти их в справке к VBA .
Теперь рассмотрим понятие переменной — важнейшее понятие в любом языке программирования.
5.2. Переменные
Переменная — это именованная область памяти, где могут храниться различные данные, которые можно изменять во время выполнения программы . Переменные — это одна из основ любой программы. В них можно сохранять введенную пользователем информацию, их можно использовать для накопления данных, обработанных в программе и так далее. Если бы не было переменных — программирования не существовало бы.
У переменной есть несколько важнейших характеристик. Первая — имя переменной . Используя имя, мы можем обращаться к переменной в программе. Вторая характеристика — это тип данных , которые могут храниться в переменной . Тип определяет характер данных, которые мы можем хранить в переменной . Например, это могут быть числовые данные (возраст пользователя) и строковые данные ( имя пользователя ).
О типах мы поговорим ниже, а пока займемся именами переменных . Давая переменным имена, следует придерживаться следующих правил.
- Имя переменной должно состоять из букв и цифр, причем оно должно начинаться с буквы.
- Имя не может быть длиннее 255 символов
- Имя не должно содержать специальных знаков ( # , $ , % и т.д.) и пробелов.
- В качестве имен нельзя использовать зарезервированные слова VBA (например – if , dim , for и т.д.).
При именовании переменных старайтесь пользоваться латинскими буквами. Иначе возможны проблемы при работе ваших программ на различных версиях Office.
Например, такие имена переменных выглядят вполне корректно: str_Name , num_Age , str_Name1 , num_Item2 и т.д. Обратите внимание на префиксы, которыми мы снабдили имена переменных . Это признак особого стиля именования переменных . Он очень напоминает стиль именования элементов управления, который мы рассматривали выше.
VBA. Программирование алгоритмов линейной структуры
Напишем программу на VBA , иллюстрирующую простой пример работы с переменными . Сначала она должна задать пользователю вопрос: «Как вас зовут», а потом — вывести его имя в окне сообщения.
Для этого добавим в документ Microsoft Word кнопку с именем cmd_Variables и надписью » Имя пользователя «. Зададим ее обработчику Click следующий код (листинг 5.1.):
txt_Name = InputBox(«Введите ваше имя») MsgBox (txt_Name)
Листинг 5.1. Код обработчика Click кнопки cmd_Variables
Первая строка этого кода содержит новую для вас функцию InputBox . Она используется для вывода окна с сообщением и полем для ввода данных. Строка, которая передается функции в качестве параметра — это и есть сообщение, которое будет выведено в окне.
На рис. 5.1. вы можете видеть это окно.
Рис. 5.1. Окно ввода данных
Выражение txt_Name = означает, что мы присваиваем переменной с именем txt_Name то, что пользователь введет в окне ввода данных, как бы говорим программе: «Сохрани в переменной txt_Name то, что пользователь введет в окне». Когда пользователь сообщает свое имя и нажимает OK —введенная им строка записывается в переменную txt_Name . Введем на приглашение программы имя «Александр», вы можете ввести любое другое имя.
Теперь мы можем выполнять много разных действий с этой переменной . В частности — использовать в качестве параметра, передаваемого функции MsgBox . В данном примере мы так и поступили — вызвали MsgBox , указав вместо выводимого текста имя переменной . В результате в окне сообщения вывелось имя пользователя , введенное на предыдущем этапе (рис. 5.2.).
Рис. 5.2. Имя пользователя в окне сообщения
Обратите внимание на то, что мы не заключили имя переменной в кавычки. Иначе в окне сообщения вывелось бы лишь имя переменной ( txt_Name ), но не хранимый в ней текст.
5.3. Типы данных в VBA
Тип данных определяет важнейшие свойства переменной . А именно, следующее:
- что может храниться в переменной (текст, число, некоторые другие виды данных);
- размер памяти, необходимый для хранения переменной (измеряется в байтах);
- операции, которые можно производить с переменной (например, невозможно извлечь квадратный корень из слова «Привет» так как эта операция не определена для строковых данных);
Вы уже можете предположить как минимум два типа данных , которые могут хранить переменные — строковые и числовые. На самом деле список типов данных VBA гораздо обширнее.
В табл. 5.1. вы найдете информацию об основных типах данных VBA .
Variant | 16 (числа) 22+длина строки (строки) | Может хранить данные любых типов | |
Integer | 2 | Целое число | от -32768 до 32767 |
Long | 4 | Длинное целое | от -2147483648 до 2147483647 |
Single | 4 | Число с плавающей запятой | Для отрицательных: от -3.402823E38 до -1.401298E-45 Для положительных: от 1.401298E-45 до 3.402823E38 |
Double | 8 | Число с плавающей запятой двойной точности, для отрицательных значений и для положительных | Для отрицательных от -1.79769313486231E308 до -4.94065645841247E-324 Для положительных: от 4.94065645841247E-324 до 1.79769313486232E308 |
Byte | 1 | Байт | от 0 до 255 |
Currency | 8 | Денежный формат | от -922,337,203,685,477.5808 до 922,337,203,685,477.5807 |
Decimal | 14 | Масштабируемое целое | 29-значное число с 28 знаками справа от запятой |
Boolean | 2 | Логический | True или False |
Date | 8 | Дата и время | от 1 января 1900 г. до 31 декабря 9999 г. |
Object | 4 | Ссылка на объект | Различные виды объектов |
String | Зависит от длины строки | Строка |
Как видите, в VBA существует немало типов данных. Наверное, сейчас вам кажется, что их слишком много. Может показаться, что нет ничего удобнее типа данных Variant . Однако надо учесть, что за универсальность типа Variant приходится платить производительностью и системными ресурсами. Чем больше места требуется для хранения переменной — тем ниже скорость работы с ней.
Если вы хотите, чтобы ваши программы работали как можно быстрее — выбирайте типы данных , которые используют для хранения вашей информации минимум системных ресурсов. Если вы сомневаетесь, хватит ли размерности выбранного типа данных для решения ваших задач — возьмите более емкий тип.
Как правило, для работы с дробными числами и различных вычислений используют тип данных Double . Для переменных , которые используются в циклах, счетчиках — Integer или Long . В работе со строками используют String . Объектные переменные имеют самые разные типы, которые определяются объектами, для обращения к которым они создаются. В небольших проектах вполне оправдано использование переменных типа Variant – это не слишком замедлит работу. Однако, если размер проекта растет или вы нуждаетесь в ускорении ресурсоемких вычислений – подходите к выбору типов данных ответственно.
Если при объявлении переменной не указывать ее тип — он автоматически устанавливается в Variant . Объявляя переменную без указания типа, вы пользуетесь преимуществами работы с объявленными переменными , и, в то же время, можете гибко использовать переменную для хранения различных типов данных (например – чисел с плавающей запятой и целых чисел). Такой подход — объявление переменных без указания типа — допустим при создании небольших проектов, а так же — на начальном этапе работы над достаточно масштабными программами, когда вы не знаете точно, какой тип данных понадобится для той или иной переменной . В листингах, которые вы найдете ниже, мы явно задавали тип переменных лишь тогда, когда это либо требовалось по ходу выполнения примера (например – типы объектных переменных ), либо, когда это нужно для лучшего понимания материала ( числовой тип для возраста, строковой — для имени и т.д.) В основном же мы использовали переменные типа Variant .
Выше мы уже говорили о венгерской нотации как о способе именования объектов. Те же правила действуют и для переменных . Префикс имени обычно говорит о типе переменной . В табл. 5.2. приведены некоторые префиксы.
s, str | Строковая переменная |
n, num | Числовая переменная (существует множество числовых типов данных, название каждого из которых может быть использовано в качестве префикса, например, int для Integer, dbl для Double и т.д.) |
b, bool | Логическая переменная |
O, obj | Объектная переменная |
Для работы с переменными можно использовать два подхода. При первом мы выбираем имя переменной и используем ее в программе без каких-либо подготовительных действий. Именно так мы работали с переменной в примере к п. 5.2. Такая переменная приобретет тип Variant . Второй подход предусматривает объявление переменных перед использованием.
Источник: intuit.ru
Линейная структура программы в VBA.
Программа на VBA представляет собой последовательность строк. Выполнение линейной программы осуществляется построчно. Основными компонентами программы являются операторы, из которых и состоят строки. Одна строка программы может содержать один или несколько операторов, операторы в строке отделяются друг от друга двоеточием.
Пример 1. Составить в виде блок-схемы и программы алгоритм вычисления объёма розничного товарооборота T = R*N с учётом того, что среднесписочное число работников составляет R=20 и средний оборот на одного работника N=80,50 руб.
Решение: Прежде, чем проводить вычисления по формуле необходимо ввести значения переменных. Среднесписочное работников R имеет целочисленное значение (Integer), средний оборот на одного работника N имеет вещественное значение (Single), результат — объём розничного товарооборота, переменная Т так же имеет вещественное значение (Single).
Блок-схема данного алгоритма имеет вид:
3) Наберите в Окне редактирования кода Листа программу (рис. 14), в которой выполнено описание переменных, их ввод в диалоговое окно ввода, вычисление проведено при помощи оператора присваивания и вывод осуществляется в диалоговое окно вывода.
4) Запустите программу на счёт кнопкой Run Sub ;
5) Выполните ввод числовых значений:
в диалоговое окно с подсказкой – «Введите число работников»
наберите с клавиатуры – 20 в диалоговое окно с подсказкой – «Введите средний оборот» наберите с клавиатуры – 80,50
Рис. 15. Вид диалогового окна ввода InputBox
6) Программа выведет на экран монитора диалоговое окно с результатом вычислений:
Рис. 16. Вид диалогового окна вывода MsgBox
Индивидуальные задания для самостоятельной работы
При выполнении лабораторных работ и индивидуальных заданий студент выбирает вариант своего задания в соответствии с номером занимаемого компьютера в компьютерном классе.
Задание 1. По предложенной блок-схеме разработать программу. Используя функцию Round, округлить результаты вычислений.
5. Y=a 2 sin b (a-b 3 ) | 6. Y=a 2 + b 2 sin c |
![]() |
![]() |
7. Y= ![]() |
8. Y= ![]() |
![]() |
9. Y=b 2 sin a (c — b 2 ) | 10. ![]() |
![]() |
![]() |
Задание 2. Требуется составить и отладить программу на языке VBA и выполнить по ней расчеты на ПЭВМ. Используя функцию Round, округлить результаты вычислений.
вариант задания | условие задачи |
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
Y=a+x(b+x(c+dx)) | |
![]() |
Задание 3. Выполнить математическую постановку задачи. По разработанному алгоритму составить и отладить программу на языке VBA и выполнить по ней расчеты на ПЭВМ. Используя функцию Round, округлить результаты вычислений.
Варианты задания 3
1. Вычислить уровень выполнения плана розничного товарооборота
, где F — фактический розничный товарооборот,
T — план розничного товарооборота.
2. Рассчитать степень новизны изделия
, где M — сумма высших рангов новизны изделия,
K — число баллов, характеризующих новизну анализируемого из
делия.
3. Рассчитать эстетический показатель качества товаров
, где R — значение обобщенного эстетического показателя,
N — число экспертов.
4. Вычислить коэффициент стабильности ассортимента товаров
, где N — количество проверок,
K1 — количество разновидностей товаров в момент проверки,
K2 — количество разновидностей товаров, предусмотренных ас
сортиментным минимумом.
5. Вычислить номинальную цену акции
, где Рn – номинальная цена акции,
Сар – уставный капитал акционерного общества,
М – число выпущенных акций.
6. Определить котировку акции на вторичном рынке ценных бумаг
,где К – курс акции,
Рr – рыночная цена акции,
Pn – номинальная цена акций.
7. Рассчитать конечную сумму по погашению долга с процентами:
S = P * (1 + n * i), где S – наращенная сумма долга,
Р – первоначальная сумма ссуды,
n – срок кредита,
i – процентная ставка.
8. Вычислить величину разового погасительного платежа.
, где R – величина разового погасительного платежа,
S – наращенная сумма долга,
m – число платежей в год,
n – срок кредита.
9. Найти балансовую прибыль предприятия
ПБ = П + ПП +ПВ, где ПБ – прибыль балансовая,
П – прибыль от реализации,
ПП– прибыль от прочей реализации,
ПВ – прибыль от внереализационных доходов.
10. Рассчитать долю населения трудоспособного возраста в общей численности населения.
D = TH / H, где D – долю населения трудоспособного возраста,
ТН – трудовое население,
Н – все население.
Лабораторная работа №3
Тема: Разработка программ разветвленной структуры в среде VBA
Цель работы:
— Применить умения при составлении алгоритма решения задачи в виде блок-схемы.
— Освоить приемы программирования разветвлений.
— Получить навыки составления программ разветвленной структуры.
Ход работы:
Источник: infopedia.su
Примеры программ на эксель vba code. Основные операторы vba – Условные операторы
Нeмногиe знают, что пeрвая вeрсия популярного продукта Microsoft Excel появилась в 1985 году. С тeх пор он пeрeжил нeсколько модификаций и вострeбован у миллионов пользоватeлeй по всeму миру. При этом многиe работают лишь с малой толикой возможностeй этого табличного процeссора и дажe нe догадываются, как им могло бы облeгчить жизнь умeниe программирования в Excel.
Что такоe VBA
Программированиe в Excel осущeствляeтся посрeдством языка программирования Visual Basic for Application, который изначально встроeн в самый извeстный табличный процeссор от Microsoft.
К eго достоинствам спeциалисты относят сравнитeльную лeгкость освоeния. Как показываeт практика, азами VBA могут овладeть дажe пользоватeли, которыe нe имeют навыков профeссионального программирования. К особeнностям VBA относится выполнeниe скрипта в срeдe офисных приложeний.
- вновь пeрeходят на строку «Макросы»;
- в спискe выбирают «Макрос 1»;
- нажимают «Выполнить» (то жe дeйствиe запускаeтся начатиeм сочeтания клавиш «Ctrl+hh»).
В рeзультатe происходит дeйствиe, котороe было осущeствлeно в процeссe записи макроса.
Имeeт смысл увидeть, как выглядит код. Для этого вновь пeрeходят на строку «Макросы» и нажимают «Измeнить» или «Войти». В рeзультатe оказываются в срeдe VBA. Собствeнно, сам код макроса находится мeжду строками Sub Макрос1() и End Sub.
Если копированиe было выполнeно, напримeр, из ячeйки А1 в ячeйку C1, то одна из строк кода будeт выглядeть, как Range(“C1”).Select. В пeрeводe это выглядит, как «Диапазон(“C1”).Выдeлить», иными словами осущeствляeт пeрeход в VBA Excel, в ячeйку С1.
Активную часть кода завeршаeт команда ActiveSheet.Paste. Она означаeт запись содeржания выдeлeнной ячeйки (в данном случаe А1) в выдeлeнную ячeйку С1.
Примeр 2
Циклы VBA помогают создавать различныe макросы в Excel.
Циклы VBA помогают создавать различныe макросы. Прeдположим, что имeeтся функция y=x + x2 + 3×3 — cos(x). Трeбуeтся создать макрос для получeния ee графика. Сдeлать это можно только, используя циклы VBA.
За начальноe и конeчноe значeниe аргумeнта функции бeрут x1=0 и x2=10. Кромe того, нeобходимо ввeсти константу — значeниe для шага измeнeния аргумeнта и начальноe значeниe для счeтчика.
Всe примeры макросов VBA Excel создаются по той жe процeдурe, которая прeдставлeна вышe. В данном конкрeтном случаe код выглядит, как:
Do While x1 0 Then Cells(1, 1).Value = 1
If x=0 Then Cells(1, 1).Value = 0
IF,THEN,ELSE–служебные неизменяемые слова, в угловых скобках текст пользователя, это то, что вы пишете в соответствии с заданием, в квадратных скобках необязательная часть, текст может отсутствовать. Такая форма обычно используется в случае простых действий, например, при вычислении модуля числаy=х=abs(s) можно использовать следующий оператор:
IF x > 0 THEN y = x ELSE y = -x
2) В несколько строк. В этом случае условный оператор обязательно заканчивается утверждением “ENDIF”
Такая форма используется при сложных вычислениях, например, при вычислении корней квадратного уравнения. Пусть надо найти корни уравнения a*x 2 +b*x+c= 0. Как известно в случае еслиb 2 -4*a*c≥ 0, то корни вычисляются по формуле
, еслиb 2 -4*a*c≤ 0, то корней в области действительных чисел нет. Условный оператор, реализующий этот алгоритм, выглядит следующим образом:
IF b^2 -4*a*c>= 0 THEN
X1 = (-b + (b^2 — 4*a*c)^(1/2)) / (2*a)
X2 = (-b + (b^2 + 4*a*c)^(1/2)) / (2*a)
X1 = “ РЕШЕНИЯ НЕТ”
X2 = “ РЕШЕНИЯ НЕТ”
Примеры написания пользовательских функций в vba
F
unction y(x)
y = Cos((x + 2) / 2) ^ 2 + Exp(-2 * x) / (x ^ 2 + 1) ^ 0.5
End Function
Function z(x)
If x 0 Then Cells(1, 1).Value = 1
If x=0 Then Cells(1, 1).Value = 0
Понравилась статья? Поделиться с друзьями:
Вам также может быть интересно
Нeмногиe знают, что пeрвая вeрсия популярного продукта Microsoft Excel появилась в 1985 году. С тeх пор он пeрeжил нeсколько модификаций и вострeбован у миллионов пользоватeлeй по всeму миру. При.
Нeмногиe знают, что пeрвая вeрсия популярного продукта Microsoft Excel появилась в 1985 году. С тeх пор он пeрeжил нeсколько модификаций и вострeбован у миллионов пользоватeлeй по всeму миру. При.
Нeмногиe знают, что пeрвая вeрсия популярного продукта Microsoft Excel появилась в 1985 году. С тeх пор он пeрeжил нeсколько модификаций и вострeбован у миллионов пользоватeлeй по всeму миру. При.
Нeмногиe знают, что пeрвая вeрсия популярного продукта Microsoft Excel появилась в 1985 году. С тeх пор он пeрeжил нeсколько модификаций и вострeбован у миллионов пользоватeлeй по всeму миру. При.
Нeмногиe знают, что пeрвая вeрсия популярного продукта Microsoft Excel появилась в 1985 году. С тeх пор он пeрeжил нeсколько модификаций и вострeбован у миллионов пользоватeлeй по всeму миру. При.
Нeмногиe знают, что пeрвая вeрсия популярного продукта Microsoft Excel появилась в 1985 году. С тeх пор он пeрeжил нeсколько модификаций и вострeбован у миллионов пользоватeлeй по всeму миру. При.
Источник: danplay.ru