'операторы
Loop
6. Range - объект для работы с данными в ячейках рабочего листа.
Cells - объект доступа к диапазону ячеек по индексам.
Пример 1 (одномерный массив): заполнить массив случайными вещественными числами, вычислить их сумму, вывести сумму и массив.
| Операторы программы | Комментарий |
| Option Explicit | |
| Public Sub ExecArray() | Начало процедуры |
| Const n = 10 | Задание константы |
| Dim sngArray(1 To n) As Single | Задание одномерного массива |
| Dim i As Integer | Задание счетчика шагов |
| Dim mes As String | Задание переменной mes |
| Randomize | Активизация генератора случайных чисел |
| mes = "V[" | Начальное значение для строки элементов массива |
| For i = 1 To n | Начало цикла |
| sngArray(i) = Rnd | Получение случайного вещественного числа |
| mes = mes & "" & Format(sngArray(i), "###0.00") | Вывод переменной mes с округлением |
| Next i | Следующее значение i |
| mes = mes + "]" | Конечное значение для строки элементов массива |
| Dim s As Single | Задание переменной s |
| s = 0 | Начальное значение суммы |
| For i = 1 To n | Начало цикла |
| s = s + sngArray(i) | Вычисление суммы |
| Next i | Следующее значение i |
| MsgBox "S=" & s & Chr(10) & Chr(13) & mes, vbInformation, "“ | Вывод результатов в диалог (Chr – управляющие коды для перехода на новую строку) |
| End Sub | Окончание процедуры |
Задание:
1. Изменить имя процедуры на «Massiv».
2. Изменить имя массива на L.
3. Убрать начальное и конечное значение переменной mes.
4. Убрать округление переменной mes.
5. Убрать пиктограмму с «!».
Пример 2 (одномерный массив): создать макрос для ввода с клавиатуры последовательности чисел, выполнить их суммирование до контрольного значения, которое вводится с клавиатуры.
| Код макроса | Комментарий |
| Option Explicit | |
| Public Sub getNumbers() | Начало процедуры |
| Dim strN As String, strX As String | Задание переменных |
| Dim n As Single, s As Single, x As Single | |
| strN = InputBox(“Вв. Предельное число N") | Диалог для ввода предельного числа |
| If Not IsNumeric(strN) Then Exit Sub | Если введено не число - выход из программы |
| n = CSng(strN) | Преобразование n в число с плавающей запятой |
| s = 0 | Начальное значение суммы |
| Do While s < n | Начало цикла по логическому условию |
| strX = InputBox(“Введите число") | Диалог для ввода числа |
| If Not IsNumeric(strX) Then Exit Do | Если введено не число - выход из программы |
| x = CSng(strX) | Преобразование x в число с плавающей запятой |
| s = s + x | Вычисление суммы |
| Loop | Конец |
| MsgBox “Получено=" & s & "N=" & n | Вывод результатов в диалог |
| End Sub | Окончание процедуры |
Задание:
1. Заполнить два массива случайными числами, вычислить их сумму.
2. Заполнить два массива случайными числами, создать третий массив, элементы которого являются суммами двух предыдущих.
Пример 3 (операции с матрицами): Заполнить квадратные матрицы А и В размера n x n случайными вещественными числами. Получить новую матрицу С по формуле: С(i,j)=A(i,j)+B(i,j).
Рабочий лист после обработки данных:

1. Создать 3 командные кнопки, изменить имя и заголовок.
2. Ввести операторы программы в окне VBA
| Операторы программы | Комментарий |
| Const n = 5 | Задание константы |
| Dim A(1 To n, 1 To n) As Single | Задание переменных с плавающей запятой |
| Dim B(1 To n, 1 To n) As Single | |
| Dim cRow As Integer, cCol As Integer | Задание целочисленных переменных |
| Кнопка «Ввод» | |
| Private Sub cmdInput_Click() | Начало процедуры |
| Range("A12:E16").ClearContents | Очистка области вывода нового массива |
| cmdExec.Enabled = True | Открыть доступ к кнопке «Вычислить» |
| ‘Получение исходных матриц | |
| Randomize | Активизация генератора случайных чисел |
| For i = 1 To n | Начало цикла |
| For j = 1 To n | |
| A(i, j) = Rnd | Заполнение ячеек случайными числами |
| B(i, j) = Rnd | |
| Next j | Конец цикла |
| Next i | |
| ‘Вывод исходных матриц на рабочий лист | |
| Dim dCol As Integer | |
| dCol = 7 | Увеличение № столбца |
| cRow = 4 | № первой строки |
| For i = 1 To n | |
| cCol = 1 | |
| For j = 1 To n | |
| Cells(cRow, cCol).Value = A(i, j) | |
| Cells(cRow, cCol + dCol).Value = B(i, j) | |
| cCol = cCol + 1 | |
| Next j | |
| cRow = cRow + 1 | |
| Next i | |
| Range("A4:E8").NumberFormat = "0.000" | Форматирование выходных исходных данных |
| Range("H4:L8").NumberFormat = "0.000" | |
| End Sub | |
| Кнопка «Вычислить» | |
| Private Sub cmdExec_Click() | |
| Dim C(1 To n, 1 To n) As Single | Новая матрица |
| For i = 1 To n | |
| For j = 1 To n | |
| C(i, j) = A(i, j) + B(i, j) | Вычисление элементов матрицы |
| Next j | |
| Next i | |
| cRow = 12 | Первая строка матрицы С |
| ‘Вывод полученной матрицы | |
| For i = 1 To n | |
| cCol = 1 | |
| For j = 1 To n | |
| Cells(cRow, cCol).Value = C(i, j) | |
| cCol = cCol + 1 | |
| Next j | |
| cRow = cRow + 1 | |
| Next i | |
| Range("A12:E16").NumberFormat = "0.000" | Форматирование чисел вычисленной матрицы |
| cmdExec.Enabled = False | Закрыть доступ к кнопке «Вычислить» |
| End Sub | |
| Кнопка «Сброс» | |
| Private Sub cmdClear_Click() | |
| ‘Очистка областей вывода | |
| Range("A12:E16").ClearContents | |
| Range("A4:E8").ClearContents | |
| Range("H4:L8").ClearContents | |
| End Sub | Окончание процедуры |






