Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Function f(ByVal x As Single) As Single

Поиск

f = Sin(x^2) + Cos(3*x)

End Function

Оператор вызова функции состоит из имени функции и списка фактических параметров, заключенных в скобки.

Пример: y = f(x) ‘Оператор вызова функции.

При необходимости можно указать область определения процедуры или функции:

Private Sub Программа_Привет() – закрытая процедура. Возможен вызов из модуля, где она находится, то есть доступна для других процедур только того модуля, в котором она описана.

Public Sub Программа_Привет() –открытая процедура. Возможен вызов из любого модуля, то есть доступна для всех других процедур во всех модулях.

Static Sub Программа_Привет() –указывает, что значения локальных переменных процедуры сохраняются в промежутках времени между вызовами этой процедуры.

Private Function f(ByVal x As Single, ByVal y As Single) As Single – закрытая функция. Возможен вызов из модуля, где она находится.

Public Function f(ByVal x As Single, ByVal y As Single) As Single –открытая функция. Возможен вызов из любого модуля.

Процедуры ввода-вывода через диалоговые окна

 

В сокращенном варианте инструкции ввода-вывода имеют вид:

InputBox( <” сообщение” > )

MsgBox( <“ сообщение” > )

Пример:

Sub Krb()

Dim S As Integer

Dim Sum As Single

Dim P As Integer

Dim Prom As Variant

S = 5000

Do

Prom = InputBox(“Введите значение P=”)

IF Not IsNumeric(Prom) Then MsgBox(“Повторите ввод!”)

Loop Until IsNumeric(Prom)

P = Prom

Sum = S + S*0.01*P

MsgBox(“Результат S = ”) & CSng(Sum

End Sub

Вопросы для самоконтроля

1. Что понимается под параметрами-переменными и параметрами-значениями?

2. Какое различие между понятиями “формальные” и “фактические” параметры?

3. Способы передачи параметров-переменных и параметров значений.

4. Могут ли быть разными имена формальных и фактических параметров?

5. В какой последовательности должны располагаться имена параметров в операторах вызова процедуры и функции?

6. Способы вызова процедуры.

Массивы

Массив – набор однотипных переменных с одним именем, каждая из которых называется элементом массива и имеет свой номер (индекс).

Массивы могут быть: одномерные (для нумерации элементов используется один индекс), двумерные (для нумерации элементов используются два индекса: номер строки, номер столбца) и N-мерные. Число измерений может достигать 60.

Кроме того, массивы подразделяются на статические и динамические.

 

9.3.8.1. Статические массивы

 

Статическим называется массив с заранее известным количеством элементов.

Синтаксис описания (объявления) статического массива:

Dim < Имя массива > ( < верхняя граница > ) As <Тип >

По умолчанию нижняя граница равна 0.

Dim < Имя массива > ( < Нижняя граница > To < Верхняя граница > ) As < Тип >

Примеры:

Dim a(10) As Single ‘ Одномерный массив с начальной границей, равной 0.

Dim S(3 To 5) As String ‘ Одномерный массив с явными границами.

Dim Z(1 To 3, 1 To 5) As Byte ‘ Двумерный массив.

Для задания по умолчанию нижней границы массива, равной 1, используется команда Option Base 1, которая вводится в начале модуля.

Примеры:

Option Base 1

---------------------------------------------------------------------------------------------

Sub Mas1()

Dim a(5) As Integer

Dim i As Integer, k As Integer

WorkSheets(“Лист1”).Select ‘Выбрать Лист1 из семейства листов.

Cells.Clear ‘Очистить ячейки рабочего листа.

K = 2

For i =1 To 5

a(i) = Int(Rnd(i)*100) ‘Формирование массива a(i).

Cells(k, i + 1) = a(i) ‘Вывод массива a(i) на рабочий лист.

Next i

End Sub

Sub Mas2()

Dim a(1 to 5) As Integer, k As Integer

Dim i As Integer

WorkSheets(“Лист1”).Select

Cells.Clear

K = 2

For i = 1 To 5 ‘Формирование массива a(i).

a(i) = Int(Rnd(i)*100)

Next i

For i =1 To 5 ‘Вывод массива a(i) на рабочий лист.

Cells(k, i + 1) = a(i)

Next i

End Sub

Sub Dmas1()

Dim i As Integer

Dim j As Integer

Dim a2(1 to 3, 1 to 5) As Integer

WorkSheets(“Лист1”).Select

Cells.Clear

For i =1 To 3 ‘Формирование массива a2(i, j).

For j =1 To 5

a2(i, j) = Int(Rnd(i*j)*100)

Next j

Next i

For i = 1 To 3 ‘Вывод массива a2(i, j) на рабочий лист.

For j = 1 To 5

Cells(i + 1, j + 1) = a2(i, j)

Next j

Next i

End Sub

Sub Dmas2()

Dim a(1 to 5) As Integer, k As Integer

Dim i As Integer, prom As Variant

WorkSheets(“Лист1”).Select

Cells.Clear

K = 2

For i =1 To 5 ‘Ввод элементов массива с клавиатуры.

Do

Prom = InputBox(“Введите элемент a(“& CInt(i) & “) =”)

If Not IsNumeric(prom) Then MsgBox(“Повторите ввод!”)

Loop Until IsNumeric(prom)

A(i) = prom

Next i

For i =1 To 5 ‘Вывод массива a(i) на рабочий лист.

Cells(k,2) = “a(“& CInt(i) & “) = ”

Cells(k,3) = a(i)

k = k + 1

Next i

End Sub

 

9.4/3.8.2. Динамические массивы

 

Динамическим называется массив, размерность которого определяется в ходе выполнения программы.

Синтаксис описания массива: Dim <Имя массива>() As <Тип>

Размерность массива устанавливается и изменяется с помощью оператора:ReDim <Имя массива>(<размерность>)

Для установки и изменения размерности массива без потери его содержимого применяется оператор:

ReDim Preserve<Имя массива>(<размерность>)

Для определения параметров динамического массива используются функции:

LBound(<Имя>[,<Размерность>]) ‘Возвращает нижнюю границу указанной размерности массива, которую следует задавать равной 1.

UBound(<Имя>[,<Размерность>]) ‘Возвращает верхнюю границу указанной размерности массива, которую следует задавать равной 2. Если размерность не указана, то подразумевается значение, равное 1.

Пример:

Sub Mas4()

Dim a() As Integer

Dim i As Integer, k As Integer, j As Integer, n Integer

Dim prom As Variant

WorkSheets(“Лист1”).Select

Cells.Clear

k = 2

i = 0

Do

Prom =InputBox(“Введите количество элементов N =)

If Not IsNumeric(prom) Then MsgBox(“Повторите ввод!”)

Loop Until IsNumeric(prom)

N = prom

ReDim a(1 to n) As Integer ‘Устанавливается фактическая размерность массива a(i).

Do‘Формирование массива a(i).

ReDim Preserve a(1 to n) As Integer ‘Это другой вариант установки размерности массива с сохранением значений его элементов.

a(i) = Int(Rnd(i)*100)

i = i + 1

Loop Until i = N

For j =1 To i ‘Вывод массива a(j) на рабочий лист.

Cells(k,j + 1) = a(j)

Next j

End Sub

Array(<Список аргументов>) ‘Создает массив типа Variant. Список аргументов представляет разделенный запятыми список значений, присваиваемых элементам массива.

Пример:

Dim День As Variant

День = Array(“Пн”, “Вт”, “Ср”, “Чт”, “Пт”, “Сб”)

IsArray(<Имя переменной>) ‘Функция используется для проверки значений переменных типа Variant, содержащих массивы. Возвращает True, если переменная содержит массив, и False, если переменная не содержит массив (не является массивом).

Erase(<Список массивов>) 'Эта инструкция повторно инициализирует элементы статических массивов и освобождает память, отведенную для динамических массивов. Список массивов представляет имена очищаемых массивов, разделенных запятой. В статических массивах их элементам вместо чисел или строк фиксированной длины присваиваются значения, равные 0, а для строк переменной длины присваивается значение пустой строки. В массивах типа Variant каждому элементу присваивается значение Empty.

Вопросы для самоконтроля

1. Варианты описания статических массивов.

2. Как установить начальную границу размерности статического массива, равную 1, если при описании массива начальная граница задается равной 0?

3. Какое предельное количество измерений многомерного статического массива?

4. В каких случаях возникает потребность в применении динамического массива?

5. Как установить или изменить размерность динамического массива?

6. Как изменить размерность динамического массива без потери имеющихся значений его элементов?

 

Основные объекты VBA

 

К числу основных объектов VBA, которые описываются в этом разделе, относятся: рабочая книга (Workbook) и семейство рабочих книг (Workbooks), рабочий лист (Worksheet) и семейство рабочих листов (Worksheets), диапазон ячеек или ячейка (Range).

После объекта, обычно через точку “. ”, указывается свойство или метод. Иногда, чтобы добраться до определенного объекта, нужно пройти иерархию вышестоящих объектов.

Пример:



Поделиться:


Последнее изменение этой страницы: 2016-12-16; просмотров: 964; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.140.100 (0.007 с.)