Excel. Трюки и эффекты - [16]

Шрифт
Интервал

Procedure, 12 Пропущен первый параметр

Procedure Пропущены оба параметра

Использование именованных параметров

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

Для использованной выше процедуры Procedure вызов с применением именованных параметров выглядит следующим образом:

Procedure intA:=12, intB:=56

или

Procedure intB:=56, intA:=12

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

Procedure intB:=56

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

Function dhManyArg(Optional arg1, Optional arg2, Optional arg3,

_

Optional arg4, Optional arg5, Optional arg6, Optional arg7, _

Optional arg8)

' Инструкции функции

End Function

Очевидно, что инструкция

varRes = dhManyArg(,,"text",,,,,142.23)

куда менее наглядна и понятна, чем инструкция

varRes = dhManyArg(arg3:="text",arg8:=142.23)

Передача аргументов по значению или ссылке

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

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

Ниже приведен пример процедуры, принимающей аргумент по значению:

Sub TestByVal(ByVal intArg As Integer)

' Какие-то действия, во время которых значение переменной _

intArg изменяется

...

End Sub

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

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

Ниже приведен пример процедуры, принимающей аргумент по ссылке:

Sub TestByRef(ByRef intArg As Integer)

' Какие-то действия, во время которых значение переменной _

intArg изменяется

...

End Sub

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

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

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

Данный раздел посвящен рассмотрению возможностей VBA для определения и изменения типа значений в переменных во время выполнения программы.

Определение типов переменных

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

1. Для идентификации встроенного в VBA типа можно использовать функцию VarType. В качестве аргумента она принимает идентификатор переменной или константное значение некоторого типа. Возвращаемые этой функцией значения и их расшифровка приведены в табл. 1.8.

Таблица 1.8. Значения, возвращаемые функцией VarType

Примечание

Функция VarType возвращает значение vbArray только в сумме со значением, идентифицирующим тип элементов массива. Например, для массива строк функция возвратит значение 8192 + 8 = 8200. Значение же vbVariant возвращается только в сумме со значением vbArray и только для массивов с элементами типа Variant.

2. Для определения типа переменной можно использовать встроенную функцию TypeName. В качестве аргумента она принимает идентификатор переменной или константное значение некоторого типа. Возвращает данная функция строку (тип String) с именем типа аргумента, например «Integer», «String», «Workbook», «Object». Данная функция может вернуть некоторые специфические значения, описание которых приведено в табл. 1.9.

Таблица 1.9. Специфические значения, возвращаемые функцией TypeName

3. Для того чтобы определить тип объекта, на который указывает ссылка, допустимо использовать инструкцию TypeOf, имеющую следующий формат: TypeOf Ссылка Is Идентификатор_типа. Данная инструкция возвращает значение True, если ссылка с именем Ссылка указывает на объект, имя типа которого соответствует параметру Идентификатор_типа. В противном случае возвращается значение False. Например, если obj – ссылка на объект Worksheet, то в результате выполнения инструкции TypeOf obj Is Worksheet появится значение True.


Еще от автора Алексей Анатольевич Гладкий
Компьютер для бухгалтера

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


1С: Бухгалтерия 8.2. Понятный самоучитель для начинающих

Автоматизация бухгалтерского учета является одной из ключевых задач, стоящих перед руководством каждого предприятия. Время диктует свои условия, и уже давно дебет с кредитом вручную никто не сводит: такой учет громоздок, неповоротлив, медлителен, отличается трудоемкостью и изобилует ошибками. В этой книге мы будем рассматривать одно из наиболее популярных типовых решений системы 1С – конфигурацию «Бухгалтерия предприятия», реализованную на платформе 1С версии 8.2. Этот релиз является самым актуальным на момент написания данной книги.В результате изучения данной книги вы приобретете все необходимые знания для полноценной работы с программой «1С Бухгалтерия 8», научитесь выполнять в ней привычные бухгалтерские операции (работа с документами, формирование проводок, формирование отчетности и др.), самостоятельно создавать и подключать информационные базы, а также подготавливать программу к работе.


Как защитить компьютер от ошибок, вирусов, хакеров

Реалии сегодняшнего дня таковы, что для успешной работы на компьютере, и особенно – в Интернете, недостаточно просто иметь соответствующие навыки. В немаловажной степени результаты работы зависят от того, насколько хорошо пользователь умеет защищать свой компьютер и хранимую в нем информацию. Особую важность вопросы защиты данных приобретают в свете того, что современные мошенники постоянно совершенствуют свое «мастерство», и потеря бдительности может привести к весьма печальным последствиям.В книге подробно рассматриваются различного рода нештатные ситуации, которые могут возникать при работе на компьютере, анализируются причины их возникновения и даются советы и рекомендации по решению этих проблем.


1С: Управление торговлей 8.2. Понятный самоучитель для начинающих

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации.


1С: Бухгалтерия 8 с нуля. 100 уроков для начинающих

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции.


Особенности ПДД разных стран мира. Шпаргалка для тех, кто путешествует за рулем

Книга представляет собой полезную шпаргалку для тех, кто планирует отправиться за границу за рулем автомобиля, и особенно – кто намеревается проехать транзитом несколько стран. Рассказывается, какой скоростной режим действует в той или иной стране, какие санкции полагаются за нарушение ПДД, каковы правила парковки, проезда нерегулируемых перекрестков, перевозки детей, использования ремней безопасности, зимних покрышек и т. д. Вы узнаете, чем в разных странах мира должен быть укомплектован автомобиль, какие документы обязан иметь при себе водитель, в каких странах права международного образца являются недействительными, в каком режиме работают автозаправочные станции, где внести дорожный сбор, что делать в случае ДТП, что такое Международная конвенция о дорожном движении, а также о многом другом.