Excel. Трюки и эффекты. Алексей Гладкий
Чтение книги онлайн.

Читать онлайн книгу Excel. Трюки и эффекты - Алексей Гладкий страница 20

СКАЧАТЬ 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. В качестве аргумента она принимает идентификатор переменной СКАЧАТЬ