Do While условие

'операторы

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 Окончание процедуры

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: