Тема: Вызов функции из процедуры с массивом в качестве аргумента
Из процедуры пытаюсь вызвать функцию сортировки массива - ругается
Compile error
Expected end of statement
в строке вызова функции
arrInd = InsertionSort arrInd
и высвечивает строку вызова функции красным.
Перепробовал все в смысле синтаксиса, но где то ошибка - функция не вызывается.
Процедура:
Sub Test()
Dim i As Long
Dim arrInd() As Long
With ActiveDocument
ReDim arrInd(.Bookmarks.Count, 2)
For i = 1 To .Bookmarks.Count
arrInd(i, 1) = i
arrInd(i, 2) = .Bookmarks(i).Range.Start
Debug.Print "i: " & arrInd(i, 1) & ", Range: " & arrInd(i, 2) & " " & .Bookmarks(i).Range.Text
Next i
arrInd = InsertionSort arrInd
For i = 1 To .Bookmarks.Count
Debug.Print "i: " & arrInd(i, 1) & ", Range: " & arrInd(i, 2) & " " & .Bookmarks(i).Range.Text
Next i
End With
End Sub
Функция была написана для сортировки одномерного массива, я переписал для 2-мерного:
Public Sub InsertionSort(SortArray())
Debug.Print "InsertionSort()"
Dim TempVal(2) As Long
Dim i As Long
Dim j As Long
For i = LBound(SortArray, 1) + 1 To UBound(SortArray, 1)
TempVal(1) = SortArray(i, 1)
TempVal(2) = SortArray(i, 2)
For j = i To LBound(SortArray, 1) + 1 Step -1
If SortArray(j - 1, 2) > TempVal(2) Then
SortArray(j, 1) = SortArray(j - 1, 1)
SortArray(j, 2) = SortArray(j - 1, 2)
Else
Exit For
End If
Next
SortArray(j, 1) = TempVal(1)
SortArray(j, 2) = TempVal(2)
Next
End Sub
В чем ошибка?