Индивидуальные Задания

Лабораторная работа №2.

Линейный вычислительный процесс.

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

Познакомимся с типами данных.

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

Таблица. Типы данных языка Visual Basic

Имя типа Размер в байтах Описание и диапазон значений данных

Byte 1 (8 бит) Положительные числа от 0 до 255

Boolean 2 (16 бит) Логические значения. Только значения True и False

Currency 8 (64 бит) От -9223372036854775808 до 9223372036854775807

Date 8 (64 бит) Хранит комбинацию даты и времени. Дата от 1

января 100 г. до 31 декабря 9999 г. Время от 00:00:00 до23:59:59

Double 8 (64 бит) Отрицательные числа от - 1.79х 10308 по - 4.9х10-324.

Положительные числа от 4.9х10-324 до 1.79x10308

Integer 2 (16 бит) Числа от -32768 до 32767

Long 4 (32 бит) Числа от-2147483648 до 2147483647

Object 4 (32 бит) Используется для доступа к любому объекту VBA.

Хранит адрес объекта

Single 4 (32 бит) Отрицательные числа от -3.4х1038 до -1.4х1045

Положительные числа от 1.4х1045 до 3.4х1038

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

Variant 16 байт + 1 байт Служит для хранения данных любого типа

 

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

Данные типа Variant

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

Данные типа Variant имеют свойства тех данных, которые фактически в них записаны. Например, если в данных типа Variant записана текстовая строка, они имеют свойства данных типа String, а если там записано число, то они имеют свойства числового типа, чаще всего типа Double, хотя это может быть и Integer, и Long, и Single, и Currency.

Данные типа Variant используют самое компактное из возможных представлений, например, если в данных типа Variant записано целое число, то тот эти данные будут трактоваться как Integer или как Long, в зависимости от размера этого числа. Число 15 в переменной типа Variant будет трактоваться как Integer, а число 1000000 — как Long.

VBA хранит числа с плавающей запятой в переменных типа Variant как Double и обращается с ними так, что вы не обязаны всегда заботиться о точном типе переменных в своих программах. Любая переменная, для которой вы не указали тип явно, становится переменной типа Variant.

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

Понятие о переменных

Переменная — это имя, которое вы, программист, дали участку компьютерной памяти для того, чтобы хранить в нем данные некоторого типа. Вы можете представить себе переменную как гнездо, в котором записано какое-то значение для дальнейшего использования. Имя переменной — это ярлык, по которому осуществляется доступ к участку памяти. Содержимое участка (значение переменной) может меняться, но имя остается неизменным. В переменной VBA могут храниться данные любого из типов, перечисленных в таблице.

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

Имена переменных должны подчиняться следующим правилам.

· Имя переменной начинается с буквы.

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

· Имя переменной не должно содержать пробелов, точек и символов математических операций.

· Имя переменной не должно превышать 255 символов в длину.

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

· Имя переменной должно быть уникальным в процедуре. Если вы дадите двум переменным одинаковые имена или имя переменной совпадет с именем процедуры в том же самом модуле, при выполнении процедуры VBA выдаст сообщение об ошибке.

Вот примеры правильных имен переменных.

MyVar

PayDate

New_Item

Percent

Whole

Part

Linel2

А это примеры неправильных имен переменных.

New Iten He разрешен символ пробела

SthDimention Начинается с цифры

Dim Совпадает с зарезервированным словом

Week/Day 'Содержит знак арифметической операции

Выбирая имена переменных, старайтесь делать их описательными. Гораздо лучше дать переменной имя Percent, чем X или Y. Например, если в переменной записывается температура в градусах по Цельсию, назовите переменную CelsiusTemp или DegreesC.

 

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

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

Запись значения в переменную называется присваиванием значения переменной. Вы присваиваете значение переменной, используя оператор присваивания, который выглядит как знак равенства (=). Вот пример оператора присваивания.

MyVar=15

Этот оператор записывает число 15 в участок памяти, с которым связано имя переменной MyVar. Если это первое упоминание имени переменной, то VBA создает переменную, выделят для нее память и записывает в нее число 15.

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

Такой способ создания переменной простым ее упоминанием называется неявным объявлением переменной. Упоминая переменную в выражении, вы косвенно говорите программе VBA о том, что хотите создать такую переменную. Все переменные, созданные таким способом, получают тип Variant. Неявное создание переменных называют также созданием переменных "на лету" (on-the-fly declaration).

По некоторым причинам VBA предоставляет вам способ объявлять переменные явно, что избавит вас от возможных ошибок. Явное объявление переменных имеет много преимуществ:

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

· Явное объявление переменных помогает избежать многих ошибок, которые подстерегают вас при неявном объявлении.

· Явное объявление переменных облегчает чтение программы человеку. Видя в начале процедуры или модуля список всех переменных, человеку легче понять логику работы программы.

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

Для того, чтобы объявить переменную, используется инструкция Dim со следующим синтаксисом:

Dim имя

Имя — это любой идентификатор. Например:

Dim PcntProfit

Такая конструкция создает переменную с именем PcntProfit. (Ключевое слово Dim является сокращением от dimension — размерность.) Все переменные, которые создаются этим способом, имеют тип Variant. Имена нескольких переменных могут быть перечислены через запятую.

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

В листинге приведена процедура, преобразованная так, что переменная HelloMsg объявляется явно. Процедура Hello выводит сообщение

Процедура Hello с явным объявлением переменных _________

1: Sub Hello ()

2: Dim HelloMsg 'текст сообщения для функции MsgBox

3: HelloMsg = "Hello, World!"

4: MsgBox HelloMsg,, "Приветствие"

5: End Sub

 

Указание типа переменной в инструкции Dim

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

Dim имя As тип

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

В следующих строках приведены примеры правильного объявления типа переменных.

 

Dim PcntProfit As Single

Dim Gross_Sales As Currency

Dim PayDay As Date

Dim Massage As String

Dim Counter As Integer

 

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

Символы определения типа

! Single

@ Currency

# Double

$ String

% Integer

&__________________ __Long___________________________

Обратите внимание на то, что таких символов всего шесть. Не существует симво­лов определения типа для таких типов, как Byte, Boolean, Date, Object или Array. Сим­волы определения типа могут находиться только в конце имени переменной.

 

Понятие о константах.

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

Имя константы подчиняется тем же правилам, что и имя переменной. Правила создания имен переменных мы рассмотрели выше в этой главе.

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

Const имя = значение

Значение может быть любого типа — числом, строкой или датой. Приведем несколько примеров правильного объявления констант.

Const BillingPoint = 212

Const Цена =8.25

Const Приветствие ="Привет, коллеги!"

При желании можно объявить несколько констант в одной строке, разделяя их запятыми. Следующая строка полностью эквивалентна предыдущим трем.

Const BillingPoint = 212, Цена = 8.25, Приветствие = "Привет, коллеги!"

 

Вот пример правильного объявления констант.

Const BillingPoint = 212

Const DangerZone = BillingPoint+50

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

Инструкция Dim появляется во второй строке листинга программы Hello. Когда VBA выполняет эту строку, он создает новую переменную и выделяет для нее память. (Переменная HelloMsg имеет тип Variant, поскольку специально ее тип не указан.) В этой же строке вы видите комментарии, объясняющие назначение этой переменной.

В строке 3 листинга присваивается значение переменной HelloMsg. В этой пе­ременной содержится текст "Hello, World!". В следующей строке листинга переменная HelloMsg передается процедуре MsgBox, которая выводит на экран окно сообщения.

Когда вы создаете поименованную константу, VBA приписывает ей тип в соответ­ствии с типом выражения, которое ей присваивается. Например, считается, что кон­станта, содержащая строку, имеет тип String.

Но иногда вы можете указать тип константы явно. Это может понадобиться для повышения точности вычислений: константа, тип которой указан как Double, исполь­зует более широкий диапазон значений. Вы можете указать тип константы Integer, Long, Currency или другой для того, чтобы результат вычислений имел, в свою очередь, нужный тип.

Константа может иметь любой из типов, перечисленных для переменных, кроме Object и Array. Тип константы объявляется точно так же, как и тип переменной, про­сто объявление начинается со слова Const. Синтаксис объявления типа константы выглядит следующим образом.

Const имя As Тип = значение

Здесь имя — это идентификатор константы, тип — один из возможных VBA-типов, значение — это то значение, которое вы присваиваете константе. Вот пример правильного объявления константы.

Consr Pi As Double = 3.14

Здесь объявлена константа Pi, имеющая тип Double, и ей присвоено значение 3.14.

В VBA есть несколько констант, значение которых заранее определено для вас. Та­кие константы называют еще внутренними. Кроме внутренних констант VBA, сущест­вует несколько констант, определяемых приложением, из которого вызывается VBA. В частности, Excel 2000 определяет несколько констант для работы с книгами Excel, MS Word определяет константы для работы с документами и шаблонами, MS Access имеет несколько констант для работы с базами данных.

Все внутренние константы, определенные в VBA, имеют имя, начинающееся с букв vb. Например, такие константы, как vbOKOnly, vbOKCancel, vbAbortRetrylgnore определены в языке Visual Basic. В приложении Excel определены, например, такие константы: xlChart, xlCountrySetting, xlWorksheet. Как видите, их имена начинаются с букв xl.

Внутренние константы служат для упрощения работы с некоторыми встроенными про-. цедурами VBA, такими как уже знакомая вам MsgBox или InputBox, с которой вы познако­митесь позже. Процедура MsgBox имеет не­обязательный аргумент, указывающий количество кнопок в окне. Аргументы, соответст­вующие кнопкам, обычно задаются с помощью внутренних констант VBA.

Для того чтобы просмотреть полный список предопределенных констант как VBA, так и главного приложения, необходимо воспользоваться окном Object Browser (Просмотр объектов), которое активизируется:

r по команде View a Object Browser,

r по нажатию кнопки Object Browser на панели инструментов Standard, или

r по нажатию клавиши F2.

 

Ввод данных пользователя в вашу процедуру

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

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

Данные, полученные от пользователя, называются введенными данными, или просто вводом. Для получения данных от пользователя процедуры применяется функция InputBox. (Функция — это особый вид процедуры, которая возвращает некоторое зна­чение.) Функция InputBox выводит на экран окно с текстом, предлагающим ввести некоторое значение, и полем ввода для этого значения. Кроме того, в окне функции InputBox присутствуют кнопки ОК и Cancel.

Перед тем как вызывать функцию InputBox, вы должны сформировать текст приглаше­ния. Кроме того, вы можете задать заголовок окна, которое выведет на экран InputBox.

Синтаксис вызова InputBox выглядит следующим образом.

Строка = InputBox (Приглашение [, Заголовок])

где строка — это любая переменная, в которой может храниться текстовая строка; может иметь тип String или Variant. Приглашение — поименованная или непоимено­ванная константа или переменная, содержащая текст. Это обязательный аргумент, вы должны указывать его в вызове функции InputBox.

Заголовок — это необязательный второй аргумент функции InputBox. (Все необяза­тельные элементы в описании синтаксиса берутся в квадратные скобки.) Заголовком также может быть поименованная или непоименованная константа или переменная, со­держащая текст. Если вы опустите этот аргумент в вызове функции, в заголовке будет выведена строка Microsoft Excel. В листинге, приведенном ниже, вы видите модуль, содержащий единст­венную процедуру, и константу и переменную, объявленные на уровне модуля. Эта процедура вычисляет площадь круга. Эта про­цедура спрашивает у пользователя, для какого радиуса следует вычислять площадь.

 

Получение ввода пользователя с помощью функции InputBox __________

Dim CircleArea As Single 'сюда запишем вычисленную площадь

Const Pi As Single = 3.14 'приблизительное значение числа Pi..

Const BoxTitle = "Площадь круга"

Sub Calc_CircleArea()

Dim Radius As Single, Temp As String

6: Temp = InputBox("Введите радиус круга", "BoxTitle")

7: Radius = CSng(Temp)

8: CircleArea = Pi * (Radius * Radius)

9: MsgBox CircleArea,, "BoxTitle"

End Sub

Процедура называется Culc_CircleArea.

В процедуре объявляются константы: Pi и BoxTitle, которая используется для вывода заголовков в окна, создаваемые этой процедурой, и переменные CircleArea, Radius, Temp.

Переменная CircleArea и константы Pi и BoxTitle объявляются за пределами процедуры, т.е. будут доступными всем процедурам данного модуля.

Обратите внимание на строку 6. В этой строке вызывается функция InputBox, которая выводит свой первый аргумент в качестве приглашения, поясняя пользователю, чего от него ждут. В данном случае выводится строка “Введите радиус круга”. Второй аргумент функции — это заголовок окна; в данном случае для заголовка окна используется переменная BoxTitle.

После вызова функции, возвращаемое ею значение присваивается переменной Temp; результат функции InputBox— это всегда строка, поэтому переменная Temp была объявлена с типом String. Если пользователь введет цифру и щелкнет ОК, в переменной Temp окажется строка, введенная в окне сообщения. Перед тем, как использовать результат в математических вычислениях, нужно преобразовать его в число. Это делается в следующей строке.

В строке 8 вычисляется площадь круга, а в строке 9 – выводится на экран вычисленное значение.

 

1. Запустите Excel и откройте свой файл.

2. Войдите в редактор VBA и отредактируйте записанную Вами процедуру Hello, введя явное описание переменных.

3. Запустите на выполнение процедуру Hello. Изменился ли результат выполнения процедуры?

4. Напишите программу, которая будет запрашивать значение переменной с экрана, считывать это значение и выводить его опять на экран вместе с именем переменной.

 

Понятие об операторах и выражениях

Выражение – это величина или группа величин, объединенных в единую сущность. Каждое выражение имеет определенное и единственное значение. В состав выражения могут входить: константы, переменные любого типа, операторы, массивы, элементы массивов, функции. Выражение может иметь одно из особых значений — Empty (пусто) и Null. Для обозначения этих особых значений в языке VBA существуют соответствующие зарезервированные слова. Значение Empty соответствует неинициализированной переменной типа Variant или выражению, в которое входит такая переменная. Значение Null соответствует выражению, содержащему неверные данные, т.е. неопределенному выражению. Ниже при­ведено несколько примеров выражений.

Выражение Пояснение

5 Значением является число 5

"5" Значение — строка, состоящая из единственного символа 5

"сего"&"дня" Значение — строка сегодня

С*(р/100) Значение — число, полученное после умножения значения пере­менной С на значение, полученное после деления переменной Р на константу 100

CStr(UOO) Значение равно результату, возвращаемому функцией CStr. В данном случае это строка 1200 (функция CStr преобразует числа в строки)

MyValue <= 7 Логическое выражение. Его значение зависит от того, действи­тельно ли значение переменной MyValue меньше или равно числу 7

Для объединения, сравнения или иного манипулирования значениями, входящими в выражение, используются операторы. Величины, входящие в выражение (это могут быть переменные или константы), называются операндами; большинство операторов требует наличия двух операндов. Например, в выражении 2+1 числа 2 и 1 - операнды, объединенные оператором сложения. В выражении может быть любое ко­личество операторов.

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

  • Дата. Это любое выражение, которое имеет тип Date. Такие выражения могут содержать константы даты, переменные числового типа или типа Date, число­вые константы и даты, возвращаемые функциями.
  • Числовое выражение. Это выражение одного из следующих типов: Byte, Integer, Long, Single, Double или Currency. В числовое выражение могут входить числовые переменные и константы, функции, возвращающие числа, и знаки арифметиче­ских операций. Кроме того, эти выражения могут включать строки, если их можно преобразовать в число. (Строку можно преобразовать в число, если в нее входят только цифры; например, строку "36" можно преобразовать в число 36.)
  • Строковые выражения. Это выражения имеющие тип String. Такое выражение может включать строковые константы и переменные, функции, возвращающие строки, и операторы конкатенации строк. В строковые выражения могут также входить числовые выражения, если их можно преобразовать в строки.
  • Логические выражения. Это выражение, которое имеет одно из булевых значе­ний, т.е. True или False. Такие выражения могут состоять из логических пере­менных и констант, функций, которые возвращают логическое значение, опе­раторов сравнения и логических операторов.
  • Объектное выражение. Это выражение, значением которого является ссылка на объект.

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

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

Очень важно знать типы входящих в выражение значений, так как если в выраже­нии встретятся несовместимые данные, то при выполнении программы VBA выдаст вам сообщение о несоответствии типов. Когда VBA встречает в выражении различные типы данных, он сначала пытается уладить конфликт, автоматически преобразуя дан­ные к совместимым типам. Но если это не удается, вы получаете сообщение о несоответствии типов. То же самое произойдет, если вы попытаетесь присвоить переменной значение выражения, тип которого несовместим с типом переменной. Сообщение о несоответствии типов не выдается, если один из операндов имеет тип Variant. Как мы уже говорили, проще всего преобразование типов выполняется тогда, когда переменная имеет тип Variant, но не следует этим злоупотреблять.

Во многих процедурах вы можете видеть такую конструкцию.

Count = Count + 1

GrossTotal = GrossTotal + SubTotal

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

 

Оператор присваивания (=) служит для того, чтобы записать значение выражения в переменную или значение одной переменной в другую. Оператор присваивания имеет две синтаксические формы, которые обе законны и совершенно эквивалентны. В первом случае используется ключевое слово Let и син­таксис имеет следующий вид.

Let имя = выражение

где имя — идентификатор переменной, а выражение — любое допустимое в VBA вы­ражение. Такая форма оператора присваивания пришла из старого языка Basic. Вот пример использования оператора присваивания.

Let X = Y 'Значение У записывается в переменную X

Вторая форма более общепринята и используется повсеместно. Син­таксис ее таков:

имя = выражение

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

X = Y

MyVar = 12 - YourVar

В обеих формах оператора присваивания переменная слева от него получает зна­чение выражения справа. При выполнении оператора присваивания сначала вычисля­ется выражение, стоящее справа от оператора, а потом полученное значение присваи­вается переменной, стоящей слева.

Во многих процедурах вы можете видеть такую конструкцию.

Count = Count + 1

GrossTotal = GrossTotal + SubTotal

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

 

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

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

Оператор Синтаксис Пояснение

+ N1 + N2 Складывает N1 И N2

- N1 -N2 Вычитает N2 из N1
- N1 Унарный минус (отрицательное число)

* N1 * N2 Умножает N1 на N2

/ N1 / N2 Делит N1 на N2

\ N1 \N2 Целочисленное деление. Делит N1 на N2, отбрасывая
дробную часть

Mod Nl Mod N2 Деление по модулю. Делит N1 на N2, возвращая остаток от деления
^ N1 ' N2 Возводит N1 в степень N2

 

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

6. Запустите программу и выполните ее в пошаговом режиме.

 

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

Операторы сравнения иногда называют операторами отношения. Обычно их при­меняют для задания критерия на принятие решения или для формирования условия выполнения некоторой последовательности операций. Результат оператора сравнения имеет тип Boolean и принимает только два значения — True и False. Сравнивать можно поименованные и непоименованные константы и переменные сходных типов.

Таблица. Операторы сравнения

Оператор Синтаксис Описание

= Е1 = Е2 Равно. True, если Е1 равно Е2, False в противном случае

< Е1 < Е2 Меньше. True, если Е1 меньше Е2, False в противном

случае
<= Е1 <= Е2 True, если Е1 меньше или равно Е2, False в противном

случае

> Е1 > Е2 True, если Е1 больше Е2, False в противном случае
>= Е1 >= Е2 True, если Е1 больше или равно Е2, False в противном

случае
<> Е1 <> Е2 Не равно. True, если Е1 не равно Е2, False в противном

случае
Is El Is E2 Является. Оба операнда должны иметь тип Object. True,

если Е1 и Е2 указывают на один и тот же объект, False

противном случае
Like El Like E2 Подобно. Оба операнда должны иметь тип String. True,

если El соответствует образцу, содержащемуся в Е2,

False в противном случае

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

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

В качестве операнда в логическом операторе может использоваться любое значе­ние типа Boolean или число, которое можно преобразовать к этому типу. VBA считает, что 0 соответствует значению False, а любое другое число — значению True.

Таблица Логические операторы

Оператор Синтаксис Объяснение

And El And Е2 Конъюнкция. Выражение истинно, если истинны

оба его операнда
Or El Or E2 Дизъюнкция. Выражение истинно, если истинен

хотя бы один его операнд
Not Not El Отрицание. Выражение истинно, если Е1 ложно, и

наоборот

Таблица истинности оператора And.

Операнд1 Операнд2 Значение выражения

True False False

False True False

False False False

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

(Gross_Sales < 50000) And (Net_Profit < 10000)

Это выражение имеет значение True, если значение переменной Gross_Sales мень­ше 50000, а значение переменной Net_Profit меньше 10000.

Таблица истинности оператора Or.

Операнд1 Операнд2 Значение выражения

True True True

True False True

False True True

False False False

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

(Grossjales < 50000) Or (Net_Profit < 10000)

Это выражение имеет значение True, если значение переменной Gross_Sales мень­ше 50000 или значение переменной Net_Profit меньше 10000.

Оператор Not называется логическим отрицанием. Он инвертирует любое значение, к которому применяется. Его значением будет True, если значение операнда — False, и наоборот.

Синтаксис оператора Not имеет следующий вид.

Not Операнд1

Операнд1 — это любое логическое выражение языка VBA.

Основной оператор конкатенации: "&".

Знак амперсанда имеет единственное применение в языке VBA — для слияния строк. Никаких других функций этот знак не выполняет. Синтаксис оператора конкатенации имеет следующий вид.

Операнд1 & Операнд2

Операнд1 и Операнд2 — это любые выражения строкового или числового типа, VBA String. Если один из операндов имеет значение Null или Empty, VBA трактует его как строку нулевой длины, т.е. строку, не содержащую символов.

Приоритет операций.

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

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

 

Приоритет Операция Описание
  () Круглые скобки
  ^ Возведение в степень
  - Унарный минус
  *, / Умножение и деление
  \ Целочисленное деление
  Mod Деление по модулю
  +, - Сложение и вычитание
  & Конкатенация
  >, <, >=, <=, =, <>, Is, Like Операторы сравнения
  Not НЕ
  And И
  Or ИЛИ
  Xor Исключающее ИЛИ
  Eqv Эквивалентность
  Imp Импликация
  = Присваивание

7. Запишите программу согласно вашему варианту. Запустите программу на выполнение.

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

Индивидуальные Задания

Задание Задание
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;

Для того чтобы просмотреть полный список функций как VBA, так и главного приложения, необходимо воспользоваться окном Object Browser (Просмотр объектов), которое активизируется описанным выше способом. В окне Classes выберите Math, затем в окне Members выберите нужную вам функцию, просмотрите внизу синтаксис данной функции. Функция Abs вычисляет модуль аргумента, Exp – возводит e в степень, тригонометрические функции легко узнаваемы.

Открыть окно наблюдения значений переменных в редакторе VBA можно так: выделить переменную, значение которой вы хотите наблюдать, затем выбрать Debug – Quick Watch. Чтобы добавить для наблюдения еще одну переменную, нужно выделить ее и войти Debug – Add.

Контрольные вопросы.

1. Сколько числовых типов данных насчитывается в VBA?

2. Какая разница между числами типа Integer и Single? Между Integer и Long?

3. Что такое символы определения типа?

4. Что означает выражение определить переменную неявно? А что такое явно?

5. Каковы правила в языке VBA для имен переменных? Чем еще следует руково­дствоваться при выборе имен переменных?

6. Какие преимущества дает явное описание переменных?

7. Почему в процедурах лучше использовать поименованные константы?

8. Для чего служит функция InputBox?

9. Какие аргументы функции InputBox являются обязательными?

10. Какого типа значение возвращает функция InputBox?

11. Как можно воспользоваться результатом выражения? Должны ли вы использо­вать результат выражения?

12. Для каких целей используется знак равенства как оператор?

 

Упражнения

1. Исходя из здравого смысла, решите, какая из перечисленных ниже величин должна быть переменной, а какая — константой. Выберите для них имена и напишите определение типа (если можно, сделайте это и с помощью ключевых слов, и с помощью символов определения типа).

А Вычисленное количество столбцов в листе Excel

Б Объем продаж для подразделения компании

В Предполагаемое количество респондентов в опросе

Г Вычисленная площадь поверхности цилиндра

Д Коэффициент для перевода дюймов в сантиметры

Е Рентабельность операции, выраженная в процентах

2. Напишите вручную процедуру с названием EchoThis, в которой используется функция InputBox для ввода пользователем некоторой фразы, а потом эта фраза выводится на экран функцией MsgBox.

3. С помощью программы записи макросов создайте в книге Personal.xls макрос, который будет открывать существующую книгу Excel и выбирать в ней лист с именем ЛистЗ. Остановите запись макроса. Отредактируйте записанный макрос так, чтобы он спрашивал у пользователя имя файла книги и затем открывал книгу с этим именем. (Подсказка. Сначала внимательно ознакомьтесь с тек­стом записанного макроса и поймите, в какой строке открывается файл книги. Поместите вызов функции InputBox непосредственно перед этой строкой. При­свойте введенное пользователем значение переменной, а затем подмените этой переменной непоименованную константу, созданную при записи макроса.)

4. Расставьте скобки в приведенных ниже выражениях так, чтобы их результат соот­ветствовал указанному.

3*5-7 -6

4-7 + 26 /10 3.07

312 /47+16-2 5.114754


Дата добавления: 2015-12-18; просмотров: 21; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!