колонтитул в word 2007, 0000002111
Функции VBA (ч.1). Понятие функции.Функция - это встроенная формула, выполняющая действия над выражениями и генерирующая какое-то значение, которое VBA вставляет в программу в том месте, где появляется имя этой функции. Не следует путать термины функция и процедура. Процедура, как правило, выполняет какую-то определенную задачу (задачи). Функция оперирует определенными данными и всегда возвращает некоторое результирующее значение. В приведенном выше листинге функция CStr преобразует значение другой функции Now (получение системной даты) в строку и результирующее значение присваивается переменной DT. Обратите внимание, что переменная ТМ автоматически преобразуется VBA к строковому типу в операторе вывода текстового сообщения на экран. Подобные "вольности" в программировании доступны далеко не во всех языках, поэтому, не стоит ими злоупотреблять, дабы не выработать вредную привычку в написании "неряшливых" программных кодов. Вы, наверное, уже обратили внимание, что некоторые функции не требуют аргументов. В вышеприведенном листинге функции Time, Now не требуют никаких аргументов, они просто возвращают текущие системное время и дату. В то же время функция CStr требует наличия аргумента. Функции, не требующие аргументов, просто вводятся в код программы. Функции, требующие ввода одного или нескольких аргументов, вводятся в код программы следующим образом: пишется название функции, а затем, в круглых скобках через запятую перечисляются значения аргументов. Тип данных значения, возвращаемого функцией, зависит от этой конкретной функции. Большинство функций возвращают значения типа Variant, String, Double, Integer. VBA может автоматически преобразовывать результат какой-либо функции в тип данных, совместимый с другими значениями в выражении, содержащем эту функцию. Все правила совместимости типов данных, рассмотренные для констант и переменных, применимы также к значениям, возвращаемым функциям. Игнорирование результата функцииВозвращаемое значение функции, как правило, используется в дальнейших вычислениях программы. Однако в некоторых случаях можно не использовать возвращаемое функцией значение. Именно так используется в вышеприведенном листинге функция MsgBox, хотя здесь она используется в качестве процедуры (т.к. не использует возвращаемые значения). В действительности же, VBA предоставляет несколько встроенных констант для определения кнопок в окне сообщения MsgBox. Однако, результат выбора пользователя опять никаким образом не возвращается и не используется в дальнейшем коде программы. Исправим этот нюанс. При выполнении последнего листинга VBA после ответа пользователя (который нажал на одну из трех кнопок) закрывает окно и в переменной Otvet сохраняет число, соответствующее выбранной кнопке. Два последних примера использования MsgBox показывают важный факт, касающийся функций: опуская круглые скобки вокруг списка аргументов функции, мы тем самым игнорируем результат функции. В этом случае VBA интерпретирует вызов функции, как вызов процедуры, и не возвращает результат. В то же время VBA запрещает игнорирование результата функции, имя которой является ключевым словом VBA (например, CStr), и тех функций, единственным назначением которых является предоставление некоторого возвращаемого значения, например, математических. Именованные аргументы функцииАргументы функции необходимо перечислять в определенном порядке. Так для функции MsgBox первый аргумент является сообщением для отображения, второй - это число и тип кнопок для диалогового окна, третий - заголовок диалогового окна. Об этом подсказывает всплывающее окно "Краткие сведения", появляющееся при вводе имени функции. Следует обратить внимание, что если второй (необязательный) аргумент опустить, все же необходимо включать отмечающие запятые для второго аргумента в список аргументов. При пропуске или перестановке аргументов в списке аргументов функции можно получить ошибки несовпадения типов или, еще хуже, не получить никакой ошибки вообще. В результате программа может работать неправильно, а вам будет трудно найти причину "неисправности". Чтобы предотвратить подобные ошибки, VBA дает возможность использования именованных аргументов функций. Обратите внимание на следующий листинг. Обе строки имеют один и тот же результат. Первый оператор использует обычный метод перечисления аргументов, а второй - метод именованных аргументов. Причем, обратите, внимание, во втором случае порядок следования аргументов изменен. В методе именованных аргументов это допускается. Полный синтаксис функции MsgBox следующий: MsgBox (Prompt [, Buttons] [, Title] [, HelpFile, Context]) Единственным обязательным аргументом является аргумент Prompt, который может быть любым строковым выражением и содержит информацию, которая выводится в диалоговом окне. Все остальные аргументы - необязательные. Аргумент Title - строка для заголовка диалогового окна. Аргумент HelpFile - строковое выражение, содержащее имя справочного файла Windows (который уже должен быть создан). Аргумент Context - численное выражение, указывающее раздел в справочном файле, относящийся к отображаемому диалоговому окну. Аргумент Buttons - численное выражение, которое задает количество и тип кнопок в диалоговом окне. Также указывает кнопку по умолчанию и, содержит ли это диалоговое окно стандартные значки Windows для предупредительных сообщений и запросов пользователя. Аргументы-константы функции MsgBox
Возвращаемые значения-константы функции MsgBox
Функция InputBoxInputBox - еще одна довольно часто используемая функция для обмена данными с пользователем. Полный синтаксис функции InputBox следующий: InputBox (Prompt [, Title] [, Default] [, XPos] [, YPos] [, HelpFile, Context]) Аргументы Prompt (единственный обязательный аргумент), Title, HelpFile, Context - аналогичны уже рассмотренным одноименным аргументам функции MsgBox. Аргумент Default - строковое выражение, использующееся как значение по умолчанию для пользовательского ввода. Аргументы XPos, YPos - любые численные выражения. Эти аргументы задают координаты вывода диалогового окна на экране монитора. XPos - горизонтальное расстояние от левого края окна. YPos - вертикальное расстояние от верхнего края окна. Оба расстояния измеряются в твипах (1 твип = 1/20 точки = 0,0007 дюйма). Следует быть внимательным при использовании этих аргументов, т.к. при их больших значениях диалоговое окно может "уехать" за пределы экрана монитора. В качестве примера использования функции InputBox приведен нижеследующий листинг, который запрашивает пользователя ввести имя файла, и предлагает имя по умолчанию. При вызове InputBox можно использовать именованные аргументы. Нельзя смешивать именованные аргументы с обычным списком аргументов в одном и том же вызове функции. колонтитулы в word 2007, 000000211111
колонтитулы в word 2007, 000000211
нумерация страниц в word 2007, 00000021111
|