1

Тема: Вызов функции из процедуры с массивом в качестве аргумента

Из процедуры пытаюсь вызвать функцию сортировки массива - ругается
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

В чем ошибка?

2

Re: Вызов функции из процедуры с массивом в качестве аргумента

Вопрос решен

Оказывается, в функции заголовок нужно в точности привести к типу:

Public Sub InsertionSort(SortArray() As Long)

А в вызове функции никакого присваивания не нужно, просто

InsertionSort arrInd