Использование именованных аргументов функций — КиберПедия 

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

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

Использование именованных аргументов функций

2017-11-17 290
Использование именованных аргументов функций 0.00 из 5.00 0 оценок
Заказать работу

Как вы могли уже заметить, легко нечаянно опустить отмечающие запятые или переставить значения аргументов в функциях, имеющих необязательные аргументы или несколько аргументов, несмотря на помощь свойства AutoQuick (Краткие сведения) Редактора VB. Пропуск или перестановка аргументов в списке аргументов функции могут привести к ошибкам несовпадения типов. Ошибка (что еще хуже) может быть не обнаружена. Чтобы предотвратить ошибки программирования и сделать более легким использование функций, имеющих необязательные аргументы, VBA предоставляет альтернативу перечислению значений в списке аргументов в определенном порядке. Можно также передавать значения аргументов функции, используя именованные аргументы (namedarguments) функций. Следующие строки показывают два оператора MsgBox, которые имеют один и тот же результат; первый оператор использует обычный метод перечисления аргументов, а второй – метод именованных аргументов:

MsgBoxAnyMsg,,AnyTitle

MsgBoxPrompt:=AnyMsg, Title:=AnyTitle

Символ, который присваивает значение именованному аргументу (:=), не является в точности тем же обычным оператором присваивания (=). Если опустить двоеточие (:) во время присваивания значения именованному аргументу, VBA не обязательно обнаружит ошибку синтаксиса, но не может интерпретировать этот оператор правильно. Когда VBA выполняет этот оператор, он отображает одну из нескольких возможных ошибок времени исполнения, часто – ошибку несовпадения типов.

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

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

Для этого: введите процедуру (листинг 7):

Листинг 7 – Получение входных данных при помощи оператора InputBox

1 Const Pi As Single =3.14 ' аппроксимациязначения pi

2 DimCircleAreaAsSingle ' сохраняет вычисленную площадь круга 3

4 Sub List3_07 ()

5 ConstBoxTitle = "Площадь круга"

6 Dim Radius As Single, Temp As String

8 Temp = InputBox("Введите радиус " &Chr(13) & "круга", BoxTitle)

9 Radius = CSng(Temp)

10 CircleArea = Pi * Radius * Radius

11 MsgBoxCircleArea, vbInformation + vbOKCancel, BoxTitle

12 EndSub

Строки 1 и 2 листинга 7 объявляют константу Pi и переменную CircleArea модульного уровня. Строка 4 содержит фактическое объявление процедуры. Строка 5 объявляет константу процедурного уровня BoxTitle;эта константа имеет только локальный доступ в процедуре List3_07. На строке 8 оператор вызывает функцию InputBox. Она отображает свой первый аргумент как текст в диалоговом окне, запрашивая у пользователя ввести значения какого-либо типа. В этом операторе InputBox отображает текст "Введите радиус круга" (функция Chr(13) – символ перехода на новую строку), чтобы сообщить пользователям процедуры, какое значение они должны ввести. InputBox использует второй аргумент, представленный константой BoxTitle, в качестве заголовка диалогового окна. При выполнении оператора InputBox отображается диалоговое окно (рис. 16)

Рис. 16

Пользователь вводит число в текстовое окно и выбирает командную кнопку ОК или Cancel, чтобы закрыть диалоговое окно, как и любое другое окно Windows.

Всякий раз, когда вы вызываете какую-либо функцию, необходимо как-то использовать значение, возвращаемое функцией. Значение, возвращаемое функцией, называется результатом функции (functionresult). Как показано в строке 8 в случае с функцией InputBox,результат которой присваивается переменной Temp. Результат функции InputBox всегда является строкой (вот почему переменная Temp была объявлена как String). Поскольку переменная Temp была объявлена явно как String, значение строки должно быть преобразовано в численное значение перед тем, как можно будет его использовать в математических вычислениях. Строка 9 листинга 7 выполняет именно это, используя встроенную VBA-функцию CSng для преобразования пользовательских данных ввода в число с типом Single.

Выражения в VisualBasic

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

Все выражения имеют результатом одно значение определенного типа данных. Выражения могут также иметь результатом одно из специальных значений Empty (неинициализированную переменную типа Variant или результат выражения, содержащий неинициализированную переменную типа Variant) или Null (Null представляет выражение, содержащее неверные данные). Когда вы используете какой-либо знак в выражении, элементы данных (переменные или константы), над которыми производится действие, называются операндами (operands); большинству операций требуется два операнда.

Совместимость типов данных. Автоматическое преобразование данных

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

Многие типы данных совместимы друг с другом. Например, вы можете объединять различные численные типы данных в одном и том же выражении; VBA автоматически выполняет необходимые преобразования типа различных численных типов. VBA может также иногда автоматически преобразовывать другие типы данных так, чтобы все типы в выражении были совместимы, хотя это не всегда возможно. Очень важно контролировать и знать тип выражения, потому что если выражения содержат несовместимые типы, VBA выдает ошибку времени исполнения – ошибку несовпадения типов (type-mismatch). При обработке выражения, содержащего различные типы данных VBA сначала «пытается» устранить любое различие типов, преобразуя значения в выражении в совместимые типы данных. Если устранить какие-либо различия преобразованием типов не удается, отображается ошибка времени исполнения и процедура прекращает выполняться. Например, в выражении 25 & "Информатика" VBA всегда выполняет строковую конкатенацию (соединяет две строки), независимо от типов переменных; результатом является тип String; это выражение никогда не вызывает ошибки несовпадения типов.

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

При преобразовании числа в строку VBA создает строку, содержащую все цифры этого числа и десятичный знак (если число имеет его). Число 3413.72 (точка используется для записи числа в коде), например, преобразуется в строку "3413,72". Если число очень большое или очень маленькое, VBA может создать строковое представление числа в экспоненциальной записи; например, число 0.0000000004927 преобразуется в строку "4,927Е–11".

VBA может преобразовывать строку в число, если только эта строка содержит символьное представление числа в десятичном формате или экспоненциальном. Строки "988,6", "812", "-186,7", "1,ЗЕ10" представляют числа, и VBA может преобразовать их в числа. Строки "1.045", "$74.550" и "С добрым утром!" не могут быть преобразованы в числа.

Когда VBA преобразует значения типа Boolean в числа, значение True преобразуется в 1, а значение False – в 0. Когда VBA преобразует число в тип Boolean, нуль преобразуется в False, а любое другое значение преобразуется в True. Когда VBA преобразует значения типа Boolean в строки, VBA использует строку "True" для True и "False" – для False.

Когда VBA преобразует тип данных Date в число, результатом является численное значение – число типа Double, которое содержит количество дней от 30 декабря 1899 (отрицательное число представляет дату, более раннюю, чем

12/30/1899). Десятичная часть числа (если имеется) выражает время дня как часть дня; 0 – это полночь, а 0.5 – это полдень. В VBA преобразование численных типов данных в типы Date является просто обратным преобразованию типа Date в число.

Оператор присваивания (=)

Этот оператор используется для присваивания результата выражения переменной. Синтаксис формы оператора присваивания следующий:

varname= expression

переменная varname – любая переменная, a expression – любое выражение.

При выполнении оператора присваивания VBA сначала вычисляет выражение справа от оператора присваивания (=), а затем сохраняет результат выражения в переменной, имя которой находится слева от оператора присваивания.

Изображение оператора присваивания на блок-схеме:

 

varname= expression

 

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

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

VBA может выполнять все обычные арифметические операции

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

Таблица 11 – Знаки операций (обозначения), используемые в арифметических VBA-выражениях (Ni – это любое допустимое численное выражение VBA)

Знак Синтаксис Имя/Описание
+ N1 + N2 Сложение. Прибавляет N1 к N2
N1 – N2 Вычитание. Вычитает N2 из N1
* N1 * N2 Умножение. Умножает N1 на N2
/ N1 / N2 Деление. Делит N1 на N2.
\ Nl \ N2 Целочисленное деление. Делит N1 на N2, отбрасывая любую дробную часть так, чтобы результат был целым числом.
Mod N1 Mod N2 Деление по модулю. Делит N1 на N2, возвращая только остаток операции деления.
^ N1 ^ N2 Возведение в степень. Возводит N1 в степень N2.

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

Операции сравнения

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

Результатом любой операции сравнения является значение типа Boolean: True или False. Операции сравнения используются для сравнения литеральных, константных или переменных значений любого сходного типа (табл. 12). Таблица 12 – Знаки (обозначения) операций сравнения (Е в этой таблице представляет любое действительное выражение VBA)

Операция/ Оператор Синтаксис Наименование/описание
= El = Е2 Равенство. True, если El равно Е2, иначе – False
< El< Е2 Меньше, чем. True, если El меньше, чем Е2, иначе – False
<= Меньше, чем или равно. True, если Е1 меньше или равно Е2, иначе – False
> > Больше, чем. True, если Е1 больше, чем Е2, иначе – False
>= Больше, чем или равно. True, если Е1 больше или равно Е2, иначе – False
<> Не равно. True, если Е1 не равно Е2, иначе – False
Is Elis E2 Оба операнда должны быть значениями типа Object. True, если El ссылается на тот же самый объект, что и Е2, иначе – False
Like ElLike E2 Подобие. Оба операнда должны быть значениями типа String. True, если El совпадает с образцом, содержащимся в Е2, иначе – False
Если оба операнда в выражении сравнения имеют один и тот же тип

данных, VBA выполняет простое сравнение для этого типа. Если, например, оба операнда являются строками, VBA выполняет сравнение строк; если оба операнда являются датами, то VBA выполняет сравнение дат и так далее.


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

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

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.029 с.