Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Пользовательские типы данных. СтруктурыСодержание книги
Поиск на нашем сайте
Для создания новых типов данных используется оператор Type. Его формат: Type имя .......тело структуры End Type Например, Type Client Name As String Phone As String birthday As Date End Type Далее можно объявить Dim MyClient(199) As Client Для доступа к элементу структуры используется точка (как в СИ), н апример, MyClient(k).Name =”Николай”. Динамическое перераспределение памяти Для динамического перераспределения памяти применяется оператор ReDim. Синтаксис: ReDim [Preserve ] Var 1 (индексы) [ As тип], Var 2 (индексы) [ As тип]]. Здесь Var1, Var2,… - имена переменных, Preserve - необязательный параметр, ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности. Оператор ReDim используется для задания или изменения размера динамического массива, который уже был формально описан с помощью оператора Private, Public или Dim с пустыми скобками (без индексов размерностей). Пример:
Имеется возможность повторно использовать инструкцию ReDim для изменения числа элементов и размерностей массива. Однако не допускается описание массива с одним типом данных и использование оператора ReDim для последующего изменения типа данных этого массива. При использовании ключевого слова Preserve имеется возможность изменить значение верхней границы размерности массива, но не допускается изменение числа размерностей. Попытка изменить нижнюю границу приведет к ошибке. В следующем примере показывается, как можно увеличить значение последней размерности динамического массива без уничтожения данных, содержащихся в этом массиве. ReDim X(10, 10) ... ReDim Preserve X(10, 15)
Если уменьшить размер массива, данные из удаленных элементов будут потеряны. При передаче массива в процедуру по ссылке нельзя изменять размеры массива в процедуре. Константы Объявление константы определяется ключевым словом Const, например Const Blue=5. Видимость переменных и констант Видимость переменных и констант аналогична СИ. Чтобы сделать переменную доступной всем процедурам во всех модулях, вместо Dim используется ключевое слово Public
Операторы присваивания Специфика VB - Слева от знака равенства может быть записано некоторое свойство объекта (см. выше). - Чтобы присвоить значение объектной переменной, используется ключевое слово Set, например: Dim Myobject As Object Set Myobject=ActiveSheet.Range(“B5”) Myobject.Value=5 Математические и строковые операции Специфичные для Basic математические операции:
Встроенные математические функции, не требующие пояснений: Sin(), Cos(), Tan(), Atn(), Abs(), Exp(), а также: Log () -натуральный логарифм, Sqr () - квадратный корень, Randomize () - начальная инициализация генератора случайных чисел, Rnd () - генерация случайных чисел, Sgn () - знак числа, Fix () - целая часть с отсечением дробной части, Int () - целая часть с округлением. Другие вложенные функции можно найти в справке по VB (справочное руководство по VB, раздел функции). Как правило, в комплект установки Excel входит файл Funcs.xls, где перечислены и описаны все встроенные функции Excel не только в русской, но и английской идентификации. Рекомендуем вам ознакомиться с этим файлом. Часто в приложениях используются Строковые функции:
Процедуры Процедуры - это самостоятельные программные модули, которые можно вставлять в другие программы, подключать к кнопкам, включать в меню и др. Это то, что многократно расширяет наши возможности в Excel. Формат Sub имя (аргументы) Тело процедуры End Sub Формальные аргументы в заголовке процедуры должны быть описаны по типам.
Различают четыре типа процедур: Общие, Командные, Обработки событий, Функции. Общие процедуры ничего не изменяют вне своего тела. Они вычисляют переменные, отображают документы, передают сообщения и манипулируют дисковыми файлами. Командные процедуры. Их функционирование аналогично директивам меню. Процедуры, созданные макрорекордером - пример таких процедур. Обычно командные процедуры не имеют аргументов. При необходимости они получают данные через диалоговые окна. Процедуры обработки событий связаны с конкретными событиями и выполняются, когда эти события (например, нажатие командной кнопки) происходят. Такие процедуры могут быть и командными и общими. Чтобы сделать процедуру обрабатывающей событие, нужно просто подключить эту процедуру к событию. Чтобы процедура была активной всякий раз, когда открывается или закрывается рабочая папка, необходимо назвать ее Auto_Open или Auto_Close. Для того чтобы процедура запускалась, когда активизируется таблица, приравняйте имя процедуры к свойству OnSheetActivate конкретного объекта таблицы. Например, записанный в процедуре Auto_Open оператор Worksheets("ТКЗ"). OnSheetActivate = "MySub” запускает процедуру MySub всякий раз, когда пользователь активизирует лист ТКЗ. Аналогично используется свойство OnSheetDeactivate (при деактивации объекта). Если используется объект Application, процедура будет выполняться каждый раз, когда пользователь активизирует таблицу. Вызов процедуры Как правило, процедуры закрепляются за командными кнопками, меню, клавишами клавиатуры и др. Из других программных процедур или функций процедура вызывается по имени. Фактические параметры (в отличие от СИ) записываются без скобок. Кроме упорядоченного списка, разделенного запятыми, фактические параметры можно передавать поименованным списком, где используется имя переменной из вызываемой процедуры (формальный параметр), затем знак присваивания (:=) и далее фактический аргумент. Аргументы при этом могут и не соответствовать порядку, указанному в названии процедуры. Использование поименованных списков удобно для процедур с большим количеством аргументов, где не всегда очевидно, какое значение какой переменной передается. Если процедура находится в другой папке, то нужно подключить эту папку к рабочей папке. При вызове нужно указать имя папки и модуля. Например, [Горсети.xls]. [Mod1].mysub Для того чтобы сделать процедуру недоступной из другого модуля, используйте ключевое слово Private, например Private Sub Proc1(). Примеры процедуры с аргументами Sub Multyply (Val1 As Single, Val2 As Single, Product As Single) Product= Val1* Val2 End Sub
Sub main Result As Single Multyply 5,7, Result ' Обращение к функции Multyply с параметрами 5,7, Result Debug.Print Result ' Вывод результата на отладочную панель End Sub Вызов процедуры Multyply можно записать с поименованным списком: Multyply Result:= Product, Val1:=5, Val2:= 7 Самостоятельная работа · Выполнить отладку данных функций. Проверить их работу. Использование необязательных аргументов Необязательные аргументы записываются в конце списка аргументов. Перед ними ставится ключевое слово Optional. Переменная справа от Optional должна иметь тип Variant. Пример Sub Multyply (Product As Single, Val1 As Single, Optional Val2) If IsMissing (Val2) Then Val2=10 ' проверка: задана ли переменная Val2? Product= Val1* Val2 End Sub Часто процедуры имеют неопределенное число аргументов, причем заранее неизвестно сколько. В этом случае перед последним аргументом помещается ключевое слово ParamArray, в результате чего последний аргумент преобразуется в массив типа Variant.
Пример Sub Multyply (Product As Single, ParamArray Value()) Dim Val As Variant Product=1 For Each Val in Value ' Цикл для объектов: для каждого элемента в массиве Value… Product= Product * Val Next Val End Sub
Самостоятельная работа · Напишите и выполните отладку процедуры, которая складывает два аргумента и возвращает результат в третьем. Вызов данной процедуры осуществляется из другой процедуры. · Напишите и выполните отладку процедуры ss1, которая складывает список аргументов - действительных чисел и возвращает сумму (руководствуйтесь приведенным выше аналогом). Выполните расчеты для двух, трех, четырех аргументов. · Во втором модуле напишите аналогичную процедуру ss2 для целых чисел. Затем в другой рабочей папке напишите и выполните отладку процедуры, которая использует как ss1, так и ss2. · Создайте стартовую процедуру, которая выполняется при старте Excel и печатает "Добрый день, господа студенты!" где-нибудь в центре экрана. Функции Функции - это процедуры, возвращающие результирующее значение в своем имени. Тип функции указывается после скобок. Когда функции используются в таблицах, они должны возвращать только значение, т.е. они не могут выполнять директивы как командные процедуры и не должны модифицировать содержимое ячеек. В отличие от СИ процедура-функция не имеет оператора RETURN, поэтому в теле процедуры обязательно должен присутствовать оператор присвоения некоторого значения идентификатору функции. В разрабатываемой процедуре можно использовать не только собственные функции или функции VB, но встроенные функции Excel. Все функции таблиц подключены к объекту Application. Например, в операторе n = Application.Min(n1, n2) используется функция Min () из библиотеки Excel. Замечание. Для удобства пользователя в русскоязычных версиях Excel названия большинства функций переведены на русский язык. Однако в библиотеке Excel они имеют английские идентификаторы. Для того чтобы правильно написать имя функции, рекомендуем обратиться к файлу Funcs.xls или сначала записать в Excel на макрорекордере что-либо с обращением к требуемой функции, а затем прочитать и фрагментарно использовать записанный модуль.
Передача массива Массив констант заключается в фигурные скобки. Элементы массива записываются через запятую построчно. Разделители строк - точка с запятой. Например, массив их двух строк и трех столбцов записывается в виде{1,3,4; 2,4,3}.
Ссылка на область, например А2:С6, передается как объект Range. Соответствующий аргумент функции должен принадлежать к типу Variant. Массив станет объектом. Доступ к элементам массива осуществляется обычным способом - с помощью круглых скобок и индексов. Пользовательской функции можно передавать и Excel-объекты (например, блоки ячеек). Доступ к отдельным элементам можно реализовать, например, с помощью метода Cells, но лучше использовать оператор цикла For Each. В приведенном ниже примере программа обрабатывает как массивы, так и отдельные блоки ячеек. Однако левая программа не может обрабатывать составные ссылки на области, например, А3:С8; В2:В8. Для этого нужно организовывать вложенные циклы, часто с проверкой, чем является элемент внутреннего цикла - объектом или массивом. В списке аргументов указывается ключевое слово ParamArray.
Для проверки типа элемента часто используется функция TypeName(), например If TypeName(Part)=”Range” Or Right(TypeName(Part),2)=”()” Then Для передачи массива из функции в таблицу необходимо, чтобы функция возвращала тип Variant.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-26; просмотров: 274; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.154.78 (0.012 с.) |