n = Val(InputBox("Введіть кількість рядків n"))
m = Val(InputBox("Введіть кількість стовпців m"))
For i = 1 To n
For j = 1 To m
d(i, j) = Val(InputBox("Введіть масив d"))
Next j
Next i
For j = 1 To m
sum(j) = 0
For i = 1 To n
If d(i, j) > 0 Then sum(j) = sum(j) + d(i, j)
Next i
Debug.Print sum(j)
Next j
End Sub
Приклад 6. Дана матриця З=(сij), i=1,2,...n; j=1,2,... m (n£50, m£50). Визначити для кожного рядка максимальний елемент і його індекси. (Передбачається, що в кожному рядку є єдиний максимальний елемент).
Позначення: max - максимальний елемент у рядку, jmax - номер стовпця максимального елемента.
Sub Р6()
Dim c(1 to 50, 1 to 50) As Double, max As Double
Dim i, j, n, m, jmax As Integer
n = Val(InputBox("Введіть кількість рядків n"))
m = Val(InputBox("Введіть кількість стовпців m"))
For i = 1 To n
For j = 1 To m
c(i, j) = Val(InputBox("Введіть масив c"))
Next j
Next i
For i = 1 To n
jmax = 1: max = c(i, 1)
For j = 1 To m
If c(i, j) > max Then max = c(i, j): jmax = j
Next j
Debug.Print "max= " & max & “ imax=” & i & " jmax=" & jmax
Next i
End Sub
Процедури
Програма може являти собою сукупність окремих блоків-підпрограм (процедур). Використання процедур дозволяє реалізувати один із самих прогресивних методів програмування - структурне програмування.
Процедури доцільно застосовувати у випадках, коли однакову послідовність дій необхідно виконувати в різних частинах програми й при різних вхідних даних. Таку послідовність дій можна виділити в самостійну програмну одиницю - процедуру, що може бути використана багаторазово в міру необхідності.
В VBA є 3 види процедур: процедура Function, процедура Sub і процедура Property. У даній роботі розглядаються тільки процедури Function і Sub.
Процедура Function
VBA містить безліч вбудованих функцій, наприклад, cos, sqr, mid, але користувач може створювати власні функції, використовуючи для цього процедуру Function.
Синтаксис поцедури Function:
[Private ½Public ½Static] Function Ім'я(Список аргументів ) [As тип ]
Блок операторів
End Function
Тут і далі (означає, що використовується один з варіантів: Private, Public або Static.
Private - означає, що процедура Function доступна для інших процедур тільки того модуля, у якому вона описана.
Public -означає, що процедура Function доступна для інших процедур у всіх модулях.
Static – означає, що локальні змінні процедуриFunction зберігаються в проміжках часу між викликами цієї процедури.
Ім'я – ідентифікатор функції, що задовольняє стандартним правилам побудови імен;
Тип – тип значення, що повертається Function;
Список аргументів - список змінних, що представляють аргументи, які передаються в процедуру Function при її виклику. Аргументи в списку відділяються комами.
Структура аргументу:
[Optional] [ByVal ½ByRef] [ ParamАrray] Ім'я [As тип ]
Optional - указує, що даний аргумент є необов'язковим. Аргументи, позначені кваліфікатором Optional повинні перебувати наприкінці списку аргументів.
ByVal - означає, що аргумент передається за значенням. При цьому виключається можливість зміни значення аргументу процедури після її завершення.
ByRef – аргумент передається по посиланню. Передача аргументу по посиланню дає процедурі доступ до вмісту змінної за її адресою в пам'яті. Значення змінної може бути змінене процедурою, що викликається.
За замовчуванням установлюється ByRef.
ParamАrray - позначає необов'язковий аргумент, що є масивом довільного числа змінних типу Variant. Цей аргумент може бути тільки останнім у списку аргументів. З ним не можуть використовуватися ключові слова ByVal, ByRef, Optional.
Тип - тип аргументу, може використовуватися будь-який стандартний тип даних. За замовчуванням використовується Variant.
Приклади заголовка процедури-функції: