Тема: Основы программирования в интегрированной среде Visual Basic. Массивы данных. Использование функций и процедур для работы с массивами.
⇐ ПредыдущаяСтр 10 из 10 Цель работы: - освоить работу с массивами данных в VBA. Теоретические сведения Массивы представляют собой организованный набор однотипных переменных, компактно расположенных в оперативной памяти. Объявление массива с использованием оператора Dim имеет следующий синтаксис: Dim VarName ([ Subscripts ]) [As Type ] VarName - любое имя массива, использующее допустимый идентификатор имени; Subscripts - измерение массива. Если размерность массива больше единицы, то Subscripts разделяются запятыми. Оператор Subscripts имеет следующий синтаксис: [ lower To] upper [,[ lower To] upper ].. lower - определяет нижний диапазон допустимых индексов для массива (необязательный аргумент); upper - определяет верхний предел для индексов массива (обязательный аргумент). Примеры правильного объявления массивов: Dim Array_Str (1 To 10) As String - одномерный статический строковый массив, включающий 10 элементов; Dim Array_Var() - динамический массив; Dim Array_Mult (0 To 5, 0 To 7) As Integer - двумерный статический массив целых чисел, включающий 6*8=48 элементов. При объявлении массивов следует помнить, что включение оператора Subscripts в объявлении массива создает статический массив с фиксированным числом элементов, пропуск оператора Subscripts в объявлении массива создает динамический массив, а установка директивы компилятора Option Base влияет на общее число элементов в массиве. Для доступа к элементу массива необходимо указывать имя массива, за которым следует значение индекса, заключеное в круглые скобки. При помощи вложенных циклов довольно легко можно организовать инициализацию двумерного массива: Могут сложиться обстоятельства, при которых точно неизвестно, сколько элементов потребуется в массиве. В VBA имеется возможность при помощи оператора ReDim переопределять размерность массива, а во время объявления не указывать его размерность.
Синтаксис ReDim: ReDim [Preserve] varname ( subscripts ) [As Type ] [, varname ( subscripts ) [As Type ]] varname - имя существующего массива; subscripts - размерность существующего массива; Type - любой тип VBA. Необходимо использовать отдельный оператор As Type для каждого массива, который определяется; Preserve - необязательный аргумент. Его использование приводит к тому, что данные уже имеющиеся в массиве, сохраняются после изменения его размерности. Примеры правильного использования оператора ReDim: Dim Array_Month() As String - одномерный строковый динамический массив ReDim Array_Month(29) - устанавливет размерность динамического массива равную 29 элементам ReDim Array_Month(1 To 30) - изменяет размер массива до 30 элемента ReDim Preserve Array_Month(1 To 31) - изменяет размер массива до 31 элемента, сохраняя содержимое Dim Array_DBL() As Single - объявляет динамический массив ReDim Array_DBL(2, 9) - делает массив двумерным ReDim Array_DBL(3, 7) - изменяет размер двумерного массива ReDim Preserve Array_DBL(1 To 3, 1 To 5) - изменяет последний размер массива, сохраняя содержимое Можно изменять только последнее измерение многомерного массива, когда используется ключевое слово Preserve. Функции LBound, UBound возвращают нижнее и верхнее граничные значения индексов статического или динамического массива. Синтаксис: LBound (array_Name [, dimension ]) UBound (array_Name [, dimension ]) array_Name - имя массива dimension - целое число (необязательный аргумент). Определяет измерение массива, для которого надо получить верхний или нижний предел. При отсутствии dimension возвращается предел для первого измерения массива. Оператор Erase позволяет выполнять очистку для статических массивов и удаление - для динамических. Когда элементы массива заполнены, данные в массиве остаются до тех пор, пока пользователь не присвоит новые значения элементам массива или пока VBA не освободится от массива. Это можно сделать следующим образом:
Erase My_Array Данный оператор обнуляет (если массив статический) или очищает (если массив динамический) массив My_Array. Оператор Erase удаляет из памяти динамические массивы, освобождая область памяти, ранее используемую этим массивом. При удалении динамического массива с помощью оператора Erase необходимо повторно создать массив с помощью оператора ReDim перед тем, как можно будет использовать этот определенный динамический массив снова. Ячейка рабочего листа не является объектом Excel. К отдельной ячейке рабочего листа можно получить доступ через объект Range, который представляет собой совокупность ячеек. Объект Range может представлять как единственную ячейку таблицы, так и строку или столбец, некоторую прямоугольную область,а также объединения подобных несмехных элементов. Пример адресации ячеек рабочего листа: Dim MyRange As Range Set MyRange = Range (“C1:C4”) MyRange.Range(“A1”)=7 MyRange.Range(“A2”)=“=A1+2” MyRange.Range(“A3:A4”)=“=A1+A2” Первая инструкция объявляет имя MyRange как имя диапазона.Вторая инструкция задает объект MyRange, заданный диапазоном C1:C4. Третья инструкция задает ячейку С1 в абсолютных адресах. В четвертой и пятой инструкциях ссылки слева от знака равенстваделаются относительно объекта MyRange,а ссылки справа от знака равенства привязаны к абсолютным адресам. Задание 1. Для заданного массива чисел Х и некоторой величины С, определить, сколько элементов массива меньше С. Для решения этой задачи необходимо разработать функцию. Поместить в окно кода модуля заготовку создаваемой функции. Выполнить команду Вставить, Процедура. В появившемся окне Добавить процедуру установить переключатель типа процедуры в положение функция и ввести имя функции FRP1. Ввести код функции FRP1. Public Function FPR1(X As Variant, C As Variant) As Integer 1: Dim k As Integer, I As integer, j As Integer 2: n= X.Rows.Count 3: m= X.Columns.Count 4: k=0 5: For i=1 To n 6: For j=1 To m 7: If X(i,j) < C Then 8 k=k+1 9: End If 10: Next 11: Next 12: FPR1 = k End Function Свернуть окно редактора VBA. В открывшемся окне Excel Массивы.xls протестировать созданную функцию. Задание 2. По работе с одномерными массивами выполнить индивидуальное задание в соответствии с вариантом заданным преподавателем (Таблица 14.1). Количество элементов массива задано числом N. Таблица 14.1
Задание 3. По работе с двумерными массивами выполнить индивидуальное задание в соответствии с вариантом заданным преподавателем (Таблица 14.2). Размеры массива заданы числами N и M.
Таблица 14.2.
Контрольные вопросы.
1. Дайте понятие массива данных. 2. Как задаются элементы массива? Приведите примеры массивов. 3. Как можно объявить массив? 4. Какой тип переменных должен быть задан для элементов массива при работе с ячейками таблицы? 5. Как можно задать одномерный массив? 6. Опишите объект Range. 7. Для каких целей используется метод Offset? Литература[5, 8]. Список использованной и рекомендуемой литературы 1. Слетова Л.А. Word 2007 / Л.А. Слетова. – М.: Эксмо, 2007. – 160с. 2. Пащенко И. Word 2007. Шаг за шагом. / И. Пащенко.. – М.: Эксмо, 2008. – 464с. 3. Курбатова Е.А.Microsoft Excel 2007: Самоучитель / Е.А. Курбатова. – К.: Диалектика, 2010, 315с. 4. Романенко В.Н. Работа в интернете от бытового до профессионального поиска: практическое пособие с примерами и упражнениями / В.Н. Романенко, Г.В. Никитина, В.С. Неверова. – СПб.: Профессия, 2008. – 416с. 5. Зиборов В. Visual Basic 2010 на примерах / В. Зиборов. – БХВ: Петербург, 2010. – 320с. 6. Донцов Д. Word 2007. Начали / Д. Донцов. – СПб.: Питер, 2008. – 128с. 7. Уокенбах Джон. Excel 2007. Библия: пер. с англ. / Джон Уокенбах. – К.: Диалектика, 2008, 768с. 8. Коноплева И.А. Информационные технологии / И.А. Коноплева, О.А. Хохлова, А.В. Денисов. – Проспект, 2013. – 328с.
Неля Викторовна Сикерина Методические указания по выполнению лабораторных работ для курсантов специальности 26.05.05 Судовождение очной формы обучения Тираж экз. Подписано к печати Заказ №…………..Объем 4 п.л. Изд-во ФГБОУ ВО «Керченский государственный морской технологический университет». 298309, г.Керчь, Орджоникидзе,82
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|