Основы офисного программирования и язык VBA

       

Аргументы, являющиеся массивами


Аргументы процедуры могут быть массивами. Процедуре передается имя массива, а размерность массива определяется встроенными функциями LBound и UBound. Приведем пример процедуры, вычисляющей скалярное произведение векторов:

Public Function ScalarProduct(X() As Integer, Y() As Integer) As Integer 'Вычисляет скалярное произведение двух векторов. 'Предполагается, что границы массивов совпадают.

Dim i As Integer, Sum As Integer Sum = 0 For i = LBound(X) To UBound(X) Sum = Sum + X(i) * Y(i) Next i ScalarProduct = Sum End Function

Оба параметра процедуры, передаваемые по ссылке, являются массивами, работа с которыми в теле процедуры не представляет затруднений, благодаря тому, что функции LBound и UBound позволяют установить границы массива по любому измерению. Приведем программу, в которой вызывается функция ScalarProduct:

Public Sub TestScalarProduct() Dim A(1 To 5) As Integer Dim B(1 To 5) As Integer Dim C As Variant Dim Res As Integer Dim i As Integer

C = Array(1, 2, 3, 4, 5) For i = 1 To 5 A(i) = C(i - 1) Next i C = Array(5, 4, 3, 2, 1) For i = 1 To 5 B(i) = C(i - 1) Next i Res = ScalarProduct(A, B) Debug.Print Res End Sub



Содержание раздела