- •Основы vba
- •Алфавит языкаVba
- •Имя переменной
- •Объявление переменных
- •Оператор описания переменных
- •Dim a As Integer
- •Знаки операций
- •Математические функции
- •Оператор присваивания
- •Ввод данных
- •Оператор вывода
- •Линейный процесс
- •Программный код
- •Оператор условного перехода
- •Операторы цикла
- •Оператор цикла с параметромFor–Next
- •Оператор выбораSelectCase
- •Начисление комиссионных
- •Оператор цикла с предусловием While – Wend
- •Оператор цикла Do – Loop
- •Массивы
- •Вывод массива
- •Вычисление суммы, произведения и количества элементов в одномерном массиве
- •Вычисление минимального и максимального элементов в одномерных массивах
- •Двумерные массивы
- •Ввод двумерного массива
- •Вывод двумерного массива
- •Формирование матрицы
- •Вычисление суммы, произведения, количества, минимума и максимума в двумерных массивах
- •Подпрограммы
- •Подпрограмма-процедура
- •Локальные и глобальные параметры (переменные)
- •Формальные и фактические параметры
- •Параметры, передающиеся по значению
- •Подпрограмма-функция
Вычисление суммы, произведения, количества, минимума и максимума в двумерных массивах
Сумма, произведение, количество, минимум и максимум в двумерных массивах вычисляются точно так же, как и в одномерных, только после задания начальных значений нужно открыть не один, а два цикла (по строкам и по столбцам).
S = 0 : P = 1 : K = 0 : Min = 32000 : Max = – 32000
For i = 1 To N
For j = 1 To N
S = S + x(i, j)
P = P * x(i, j)
K = K + 1
If x(i, j) < Min Then Min = x(i, j)
If x(i, j) > Max Then Max = x(i, j)
Nextj
Nexti
Пример
Задана целочисленная матрица X(5, 5). Вычислить значение выражения
,
где Р – произведение четных элементов матрицы; S– сумма нечетных элементов;Max– максимальный из положительных элементов;iMin,jMin– номера строки и столбца минимального элемента матрицы.
Программный код
Option Explicit
Sub PR23()
Dim X(5, 5) As Integer
Dim i As Integer, j As Integer
Dim T As Double, S As Double
Dim P As Double, Q As Double
Dim Max As Integer, Min As Integer
Dim iMin As Integer, jMin As Integer
‘ очистка ячеек электронной таблицы
Range(Cells(1, 1), Cells(100, 100)).Select
Selection.Clear
Cells(1, 1).Select
Randomize
For i = 1 To 5 ‘ ввод матрицы
For j = 1 To 5
Cells(i, j) = Int(Rnd * 100 – 50)
X(i, j) = Cells(i, j)
Next j
Next i
P = 1: S = 0: Max = –32000: Min = 32000
For i = 1 To 5
For j = 1 To 5
If X(i, j) Mod 2 = 0 Then P = P * X(i, j)
If X(i, j) Mod 2 <> 0 Then S = S + X(i, j)
If X(i, j) > 0 And X(i, j) > Max Then Max = X(i, j)
If X(i, j) < Min Then
Min = X(i, j)
iMin = i
jMin = j
End If
Next j
Next i
T = P * S – Max * iMin * jMin
If T >= 0 Then
Q = Sqr(T)
MsgBox ("Q=" & Q)
Else
MsgBox ("нет решения")
EndIf
EndSub
Подпрограммы
При написании длинных программ рационально использовать подпрограммы.
Подпрограмма – это отдельный блок, который может восприниматься как отдельная программа. В VBAсуществует два вида подпрограмм: подпрограмма-процедура и подпрограмма-функция.
Подпрограмма-процедура
Подпрограмма-процедура может вычислять одно значение, несколько значений или не производить никаких вычислений, а использоваться в качестве программы, выводящей на экран текст или рисунки.
Синтаксис:
[Public|Private] [Static]SubИмя([Список аргументов])
Тело подпрограммы
End Sub
Элементы описания процедуры рассмотрены в табл. 10.
Таблица 10
Public |
Указывает, что процедура Sub доступна для всех других процедур во всех модулях |
Private |
Указывает, что процедура Sub доступна для других процедур только того модуля, в котором она описана |
Static |
Указывает, что локальные переменные процедуры Sub сохраняются в промежутках времени между вызовами этой процедуры |
Список аргументов |
Список переменных, которые передаются в процедуру Sub при ее вызове. Имена переменных разделяются запятой |
Вызов процедуры Subиз другой процедуры можно произвести следующим образом:
Имя процедуры [Список фактических параметров]
Список фактических параметров – это список аргументов, передаваемых процедуре. Он должен соответствовать списку, заданному в описании процедуры, по типу и количеству.
Пример
Основные способы передачи параметров в процедуре.
Option Explicit
Sub PR27()
Dim c As Double
Dim a As Integer
Dim b As Integer
B = 12
For a = 1 To 5
Summa a, b, c
MsgBox("c=" & c)
Next a
End Sub
Sub Summa(ByVal a1, b1 As Integer, ByRef s As Double)
S=a1 +b1
EndSub
В данной программе мы сталкиваемся с несколькими видами параметров:
глобальные параметры – c,a,b;
локальные параметры – s,a1,b1;
параметры, передающиеся по значению – a,b;
параметры, передающиеся по ссылке – s;
фактические параметры – a,b,c;
формальные параметры – a1,b1,s.
Рассмотрим каждый из этих видов параметров.