Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA-Laboratorny_praktikum.doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
4.56 Mб
Скачать

5.1.1.Функция Erase

Она используется для удаления данных, хранимых в элементах массива. Если это массив фиксированного размера, функция Erase лишь очищает его, а память, выделенная массиву, остается за ним. Динамический массив уничтожается функцией Erase полностью. Программа ФункцияErase демонстрирует удаление всех значений, записанных в массив фиксированного размера.

Sub ФункцияErase()

Dim Data7(2) As Integer

Data7(1) = Int(100 * Rnd())

Data7(2) = Int(100 * Rnd())

MsgBox "Лотерейные номера: " & Data7(1) & ", " & Data7(2)

Erase Data7

MsgBox "Лотерейные номера: " & Data7(1) & ", " & Data7(2)

End Sub

Здесь элементам массива присваиваются значения и выводятся в информационном окне. Затем для удаления содержимого массива вызывается функция Erase. Второй вызов функции MsgBox свидетельствует, что во всех элементах Data7 содержатся нули. В следующем примере показан вызов функции Erase для динамического массива.

Sub EraseДинамичМассив()

Dim Data8() As Integer

ReDim Data8(2)

Data8(1) = Int(100 * Rnd())

Data8(2) = Int(100 * Rnd())

MsgBox "Лотерейные номера: " & Data8(1) & ", " & Data8(2)

Erase Data8

MsgBox "Лотерейные номера: " & Data8(1) & ", " & Data8(2)

End Sub

Выполнение программы EraseДинамичМассив приводит к ошибке в строке 8, потому что функция Erase в предыдущей строке освободила всю память, занятую динамическим массивом. После этого VBA уже не может работать с индексами Data8, и обращение к этому массиву вызывает ошибку.

5.1.2.Функции lBound и uBound

Эти функции помогут вам определить верхнюю и нижнюю границы индексов массива:

Sub Lbound_UBound()

Dim Data10(4 To 15) As Integer

MsgBox "Нижняя граница массива" & LBound(Datal0) & "."

MsgBox "Верхняя граница массива " & UBound(Datal0) & "."

End Sub

Замечание:

Применение этих функций к обычной переменной или динамическому массиву, не описанному инструкцией ReDim, вызывает ошибку при выполнении программы. Чтобы избежать этого, перед вызовом функций LBound и UBound проверьте переменную функцией IsArray (см. курс лекций).

6.Подпрограммы. Функции. Область видимости переменных, подпрограмм и функций.

6.1.Вызов подпрограммы

В VBA допускается вызов одной программы (подпрограммы) из другой, что позволяет разделять код на логически обособленные фрагменты. Использование подпрограмм дает нам следующие преимущества:

  • Мы можем вызывать один и тот же код из разных программ, передавая в него свои данные. Понятно, что при этом облегчается редактирование кода, поскольку все изменения вносятся только однажды.

  • Код VBA, разделенный на подпрограммы, обретает четкую логическую структуру; его легче разрабатывать, отлаживать и обслуживать.

Фрагментируя код, обязательно руководствуйтесь правилами логики. Одна подпрограмма должна отвечать за выполнение одной операции.

В Модуль5 наберите и протестируйте работу следующих программ:

  1. Пример вызова подпрограммы DisplayMessage без передачи данных:

Sub ВызовПодпрограммы()

Dim Range1 As Range

Set Range1 = Worksheets(1).Range("A1")

Range1.Value = 500

DisplayMessage

End Sub

Sub DisplayMessage()

MsgBox "Данные введены!"

End Sub

  1. Пример вызова подпрограммы, которая хранится в другом модуле (в Модуль3):

Sub ВызовПодпрограммы()

Dim Range1 As Range

Set Range1 = Worksheets(1).Range("A1")

Range1.Value = 500

Модуль3.DisplayMessage

End Sub

Sub DisplayMessage()

MsgBox "Данные введены!"

End Sub

Следующий пример мы выполним вместе. Модернизируем программу СлучайныеЧисла следующим образом: оформление заполненных ячеек «поручим» подпрограмме Оформление. Получим следующий код:

Sub СлучайныеЧисла()

Dim СлучЧисло As Integer

Dim Листов As String

Листов = Application.SheetsInNewWorkbook

Application.SheetsInNewWorkbook = 1

Workbooks.Add

ActiveSheet.Name = "Случ. числа"

For i = 1 To 10

СлучЧисло = Int(100 * Rnd())

Cells(i, 1).Value = СлучЧисло

Next i

'Вызов подпрограммы Оформление:

Оформление

Sheets.Add After:=Worksheets(Worksheets.Count)

Worksheets(1).Select

Range("A1").Select

Application.SheetsInNewWorkbook = Листов

ActiveWorkbook.SaveAs Filename:="C:\St\Случайные числа.xls"

MsgBox "Случайные числа разыграны!"

End Sub

Сравните полученный код с программой СлучайныеЧислаОформление – он гораздо легче для восприятия.

Замечание:

При вызове подпрограммы можно использовать другой синтаксис. Так, 31-ю строку можно записать в виде:

Call Оформление

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]