Автор работы: Пользователь скрыл имя, 03 Апреля 2013 в 10:34, лабораторная работа
Изучение демонстрационных примеров кодов VBA
Цель работы:
Изучить основные приемы программирования на VBA
Задания
1 Изучить теоретические сведения.
2 Выполнить по инструкции приведенные примеры.
3 Сформировать отчет (отразить в нем результаты работы примеров)1.
Теоретические сведения
Наименее сложный массив – это просто список элементов данных; такого рода массив называется простым, или одномерным, массивом. Подобный массив можно представить в виде очереди, где каждому элементу очереди присваивается не только порядковый номер (место в очереди), но и его конкретное значение (имярек).
Чтобы создать массив, нужно определить: его имя, количество элементов (размер массива), тип данных, которые будут храниться в массиве.
Массивы создаются при помощи оператора Dim:
Dim ИмяМассива (размер) As ТипДанных
Если вместо слова Dim набрать слово Public, будет создан массив, областью видимости которого станет вся программа.
Dim МойМассив(3) As Integer
Создан массив по имени МойМассив, состоящий из четырех элементов и способный хранить значения типа Integer.
Так как отсчет элементов начинается с нулевого номера, то ставится цифра 3.
Другая версия задания массива: указать первый и последний номера элементов массива:
Dim МойМассив (1 То 3) As Integer
Элементы созданного массива не содержат никаких данных. Чтобы сохранить в массиве какое-нибудь значение, нужно указать, какому элементу оно должно быть присвоено. Предположим, создан массив, который может содержать в себе до пяти строк:
Dim Сотрудник(4) As String
Если необходимо первому элементу массива присвоить значение Иван Никитин, надо прописать такой код:
Сотрудник(0)=«Иван Никитин»
В большинстве программ при создании массива сразу же инициализируют его, присвоив каждому элементу нулевое значение или пустую строку. Это можно сделать, используя цикл for next, например:
Dim сотрудник(4) As String
Dim I As Integer
For I=0 To 4
Сотрудник (i)=""
Next I
Значения элементов массива можно присваивать другим переменным, например:
Dim сотрудник(4) As String
Dim отпуск As String
Сотрудник(3)=«Иван Никитин»
отпуск=сотрудник(3)
Здесь:
Обычно элементы массива содержат значения, относящиеся к одному типу данных, например, только строки или только целые числа. Если же необходимо, чтобы в массиве содержались данные разных типов, при создании массива укажите тип данных Object:
Dim МойМассив as object
Элементы такого
массива могут содержать
мойМассив(0)=«Спрут»
мойМассив(1)=56
мойМассив(2)=3.1415
Порядок создания двухмерного массива тот же, что и одномерного, с той лишь разницей, что, указывая его размер, нужно указать два значения – строки и столбцы:
Dim ДвухММассив (Строки, Столбцы) As Тип Данных
Размер трехмерного массива будет определяться тремя числами и так далее:
Dim ТрехММассив (X, Y, Z) As ТипДанных
При создании массивов, в том числе и многомерных, для хранения значения каждого элемента выделяется оперативная память (даже если это нулевые значения или пустые строки). Таким образом, создавая большой массив, происходит резкое уменьшение объема свободной памяти, что может негативно отразиться на работе программы. Поэтому создавать многомерные массивы следует лишь по мере необходимости. Подобные массивы называются статическими ( static ), потому что число элементов в массиве не меняется.
Выбор размера массива может быть затруднен, если неизвестно, сколько данных будет введено в массив, или если объем данных, собираемых для массива, значительно меняется. Для подобных ситуаций VBA поддерживает особый тип массивов, называемый динамическим ( dynamic ) массивом.
Динамические массивы создаются с помощью оператора Dim, Private, Public или Static, причем список размерностей опускается, затем их размер устанавливается с помощью оператора ReDim во время выполнения процедуры.
Оператор ReDim имеет следующий синтаксис:
ReDim [Preserve] varname (subscripts) [As type] [, varname (subscripts) [As type]],
где необязательное ключевое слово Preserve приводит к тому, что VBA сохраняет данные в имеющемся массиве, когда изменяется размер массива с помощью ReDim;
varname - имя существующего массива;
subscripts - измерения массива (синтаксис для оператора subscripts в операторе ReDim такой же, как для оператора Dim);
type - любой тип
VBA или определенный
Необходимо использовать отдельный оператор As type для каждого массива, который вы определяете.
Массив в
программе можно также
Dim B(l to 2, 1 to 2) as single
В(1.1)=2
В(1.2)=5
В(2.1)=4
В(2.2)=3
создает двумерную таблицу
При работе с массивами бывает полезно применять следующие функции и процедуры.
Создает массив типа Variant. Аргумент в скобках представляет разделенный запятыми список значений, присваиваемых элементам массива.
Dim День As Variant
День=Array(«Пн», "вт", "ср", ….)
Lbound (имяМассива [, размерность])
Ubound (имяМассива [, размерность]),
где ИмяМассива - имя переменной массива;
Размерность – целое число, указывающее размерность массива, нижнюю или верхнюю границу которой возвращает функция. Для первой размерности следует указать 1, для второй – 2 и так далее Если аргумент размерность опущен, подразумевается значение 1.
Оператор Erase позволяет выполнять одну из двух задач в зависимости от того, каким массивом манипулирует пользователь – статическим или динамическим. В случае статических массивов Erase позволяет очищать все элементы массива, в основном переустанавливая массив в то же самое состояние, какое он имел, когда VBA создавал его в оперативной памяти. В случае динамических массивов Erase позволяет полностью удалять массив и его содержимое из оперативной памяти.
VBA удаляет из
памяти массивы, объявляемые
Erase array1 [, array2, …]
Здесь array 1 и array 2 представляют любое допустимое имя массива VBA.
Оператор Erase удаляет из памяти динамические массивы, освобождая область памяти, ранее используемую этим массивом. При удалении динамического массива с помощью оператора Erase необходимо повторно создать массив с помощью оператора ReDim перед тем, как можно будет использовать этот определенный динамический массив снова. При попытке доступа к элементам в динамическом массиве, для которого был использован оператор Erase, без его переопределения, VBA отображает сообщение об ошибке.
Обычно в VBA используются массивы с нулевой базой. В системе нумерации с нулевой базой индекс для первого элемента в любом измерении массива является равным 0; массив с 10 элементами имеет индексы от 0 до 9.
Было бы гораздо удобнее, если бы элементы массива нумеровались начиная с 1, а не с 0. VBA позволяет задавать начальное число для элементов массива, используя директиву компилятора Option Base для указания того, должна ли нумерация индексов начинаться с 0 или с 1.
Директива компилятора Option Base имеет следующий синтаксис:
Option Base 0 | 1
Если оператор Option Base не используется, VBA начинает нумерацию индексов массива с 0 (по умолчанию). Необходимо помещать оператор Option Base в область объявлений модуля перед объявлениями любых переменных, констант или процедур. Нельзя помещать оператор Option Base внутри процедуры. Можно иметь только один оператор Option Base в модуле; оператор Option Base влияет на все массивы, объявляемые в модуле, независимо от того, являются ли они локальными в процедуре или объявляются на модульном уровне.
Option Base 0 'установка по умолчанию с нуля
Option Base 1 'индексы массивов начинаются с 1
Создать программу, организующую три двумерных массива. Первые два массива определены поэлементно в программе. Третий массив А организуется путем суммирования соответствующих членов массивов В и С.
Результаты организации массивов выведены в соответствующие метки на форме после нажатия на кнопку Массив.
Private Sub CommandButton1_Click()
Dim B(1 To 2, 1 To 2) As Integer
Dim c(1 To 2, 1 To 2) As Integer
Dim A(1 To 2, 1 To 2) As Integer
B(1, 1)=5
B(1, 2)=4
B(2, 1)=8
B(2, 2)=10
c(1, 1)=0
c(1, 2)=1
c(2, 1)=5
c(2, 2)=10
For i=1 To 2
For j=1 To 2
A(i, j)=B(i, j) + c(i, j)
Next j
Next i
Label1.Caption=«a(1.1)=» & A(1, 1) & « a(1.2)=» & A(1, 2)& « a(2.1)=» & A(2, 1) & « a(2.2)=» & A(2, 2) Label2.Caption=«b(1.1)=» & B(1, 1) & « b(1.2)=» & B(1, 2) & « b(2.1)=» & B(2, 1) & « b(2.2)=» & B(2, 2)
Label3.Caption=«c(1.1)=» & c(1, 1) & « c(1.2)=» & c(1, 2) & « c(2.1)=» & c(2, 1) & « c(2.2)=» & c(2, 2)
End Sub
Форма примера в режиме конструктора и в рабочем состоянии
Создать программу,
создающую два двумерных
Форма примера в режиме конструктора
Форма примера в рабочем режиме
Private Sub CommandButton1_Click()
Dim B(1 To 2, 1 To 2) As String
Dim c(1 To 2, 1 To 2) As String
Dim A(1 To 2, 1 To 2) As String
Dim d(1 To 2, 1 To 2) As Integer
Dim k(1 To 2, 1 To 2) As Integer
B(1, 1)=TextBox5.Text
B(1, 2)=TextBox6.Text
B(2, 1)=TextBox7.Text
B(2, 2)=TextBox8.Text
d(1, 1)=Val(TextBox1.Text)
d(1, 2)=Val(TextBox2.Text)
d(2, 1)=Val(TextBox3.Text)
d(2, 2)=Val(TextBox4.Text)
For i=1 To 2
For j=1 To 2
k(i, j)=d(i, j) + 10
Next j
Next i
For i=1 To 2
For j=1 To 2
c(i, j)=«фамилия» + B(i, j)
Next j
Next i
For i=1 To 2
For j=1 To 2
A(i, j)=«работник» + c(i, j)
Next j
Next i
Label3.Caption=«a(1.1)=» & A(1, 1) & « a(1.2)=» & A(1, 2) & « a(2.1)=» & A(2, 1) & « a(2.2)=» & A(2, 2)
Label6.Caption=«k(1.1)=» & k(1, 1) & « k(1.2)=» & k(1, 2) & « k(2.1)=» & k(2, 1) & « k(2.2)=» & k(2, 2)
End Sub
1 Отчеты студентов различаются элементами пользовательского интерфейса (заголовками, размерами, цветовыми схемами, шрифтами форм, размещением элементов пользовательского интерфейса и др.).
ЛР.230105.910.23.05 |
Лист | |||||
2 | ||||||
Изм. |
Лист |
№ докум. |
Подп. |
Дата |
ЛР.230105.910.23.05 | ||||||||||
Изм. |
Лист |
№ докум. |
Подп. |
Дата | ||||||
Разраб. |
Фионов С.А |
Разработка программ циклической структуры на VBAОтчет |
. |
Лист |
Листов | |||||
Пров. |
Твердохлебова Т.Г |
У |
1 |
2 | ||||||
ФГОУ СПО "НПГК" | ||||||||||
Н. контр. |
||||||||||
Утв. |
Информация о работе Расчет технико-экономических показателей разработки программы