Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник описаний лабораторных по VBA.doc
Скачиваний:
8
Добавлен:
10.11.2018
Размер:
737.28 Кб
Скачать

5. Решение задач с подпрограммами

ПРИМЕР 1. Для последовательности a(10) найти номера элементов и сумму значений элементов из диапазона [2,5].

Sub summa(ByRef a As Integer, ByVal i As Integer, sum As Integer)

If a >= 2 And a <= 5 Then

MsgBox "номер=" & CStr(i)

sum = sum + a

End If

End Sub

Sub main()

Dim a(10) As Integer, i, k, s As Integer

s = 0

For i = 0 To 9

a(i) = InputBox("a(i)=")

k = i

summa a(i), k, s

Next i

MsgBox "s=" & CStr(s)

End Sub

Здесь исходные данные вводятся в окно InputBox, а результат выводится в окно MsgBox.

ПРИМЕР 2. Для матрицы а(2,3) найти номер строки и столбца для тех элементов, значения которых лежат в диапазоне [2,5], а также их сумму (исходные данные берем с рабочего листа).

Sub summa(ByRef a() As Integer, ByVal k As Integer, ByVal l As Integer, sum As Integer)

Dim i, j As Integer

For i = 0 To k

For j = 0 To l

If a(i, j) >= 2 And a(i, j) <= 5 Then

MsgBox "номер строки=" & CStr(i + 1)

MsgBox "номер столбца=" & CStr(j + 1)

sum = sum + a(i, j)

End If

Next j

Next i

End Sub

Private Sub CommandButton1_Click()

Dim a(2, 3) As Integer, i, k, l, s As Integer

s = 0

k = 2: l = 3

For i = 0 To k

For j = 0 To l

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

Next j

Next i

summa a, k, l, s

MsgBox "s=" & CStr(s)

End Sub

В данном примере исходные данные расположены на рабочем листе в столбце А, начиная с клетки А1, а номер строки, номер столбца и сама сумма выводятся в окно MsgBox.

ПРИМЕР 3. Найти сумму отрицательных элементов для каждой строки матрицы а(2,3), если исходные данные расположены на рабочем листе.

Sub summa(ByRef a() As Integer, ByVal k As Integer, ByVal l As Integer, sum() As Integer)

Dim i, j As Integer

For i = 0 To k

For j = 0 To l

If a(i, j) < 0 Then sum(i) = sum(i) + a(i, j)

Next j

Next i

End Sub

Private Sub CommandButton1_Click()

Dim a(2, 3) As Integer, i, k, l, s(2) As Integer

k = 2: l = 3

For i = 0 To k

s(i) = 0

For j = 0 To l

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

Next j

Next i

summa a, k, l, s

For i = 0 To k

MsgBox "s(i)=" & CStr(s(i))

Next i

End Sub

Исходные данные в этом случае расположены на рабочем листе, начиная с клетки А1, а результаты выводятся в окно MsgBox.

Пример 4. Найти в процедуре сумму в каждом столбце.

Sub kol(ByRef x() As Integer, ByVal n As Integer, ByVal m As Integer)

Dim i, j, k(2) As Integer

For j = 0 To m

k(j) = 0

For i = 0 To n

k(j) = k(j) + x(i, j)

Next i

MsgBox "k(j)=" & CStr(k(j))

Next j

End Sub

Sub commandbutton1_click()

Dim i, j, n, m, x(4, 2) As Integer

Dim k(2) As Integer

n = 4

m = 2

For i = 0 To n

For j = 0 To m

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

Next j

Next i

kol x, n, m

End Sub

Пример 5. В процедуре найти сумму элементов 1 и 3 строки и записать их на место элементов 1 строки.

Sub kol(ByRef x() As Integer, ByVal n As Integer, ByVal m As Integer, k() As Integer)

Dim i, j As Integer

For j = 0 To m

x(1, j) = x(1, j) + x(3, j)

Next j

End Sub

Sub commandbutton1_click()

Dim i, j, n, m, x(4, 4) As Integer

Dim k(2) As Integer

n = 4

m = 4

For i = 0 To n

For j = 0 To m

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

Next j

Next i

kol x, n, m, k

For j = 0 To m

For i = 0 To n

Cells(i + 7, j + 1).Value = x(i, j)

Next i

Next j

End Sub

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