Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 2 ]
- rizalut
- подполковник
- Неактивен
- Зарегистрирован: 05.01.2010
- Сообщений: 108
- Поблагодарили: 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
В чем ошибка?
- rizalut
- подполковник
- Неактивен
- Зарегистрирован: 05.01.2010
- Сообщений: 108
- Поблагодарили: 1
Re: Вызов функции из процедуры с массивом в качестве аргумента
Вопрос решен
Оказывается, в функции заголовок нужно в точности привести к типу:
Public Sub InsertionSort(SortArray() As Long)
А в вызове функции никакого присваивания не нужно, просто
Сообщений [ 2 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Вызов функции из процедуры с массивом в качестве аргумента
Текстовым редактором Microsoft Word пользуются большинство работающих на компьютере людей, но многим хватает тех знаний, которые они получили, разбираясь с программой самостоятельно. Наш сайт о Microsoft Office Word даст ответ про: орнаментальные рамки для текста.
Такие пользователи даже не подозревают о множестве скрытых функций и возможностей Ворда.
Форум Ворд Эксперт предназначен для продвинутых пользователей, дорожащих своим временем и желающих совершенствоваться. На портале о Microsoft Office Word вы узнаете про: увеличить яркость рисунка в ворде 2003.
Здесь вы найдете информацию по самым тонким настройкам программы, макросам и шаблонам.
У форума удобная структура, позволяющая быстро найти любую интересующую информацию. Наш сайт о Microsoft Office Word даст ответ про: как убрать разделы в 2007 ворде.
Самое основное вынесено в «Часто задаваемые вопросы», более нетривиальные проблемы настроек различных функций, редактирования, форматирования и оформления обсуждаются в подразделе «Настройки и Форматирования», а написанию шаблонов и макросов посвящен раздел «Автоматизация». Наш сайт о Microsoft Office Word даст ответ про: гостовская рамка для технологической инструкции word.
Со своими проблемами вы можете обратиться в подраздел форума «Заявки на разработку», но возможно вам помогут готовые решения из одноименного раздела. Наш сайт о Microsoft Office Word даст ответ про: как поставить квадратные скобки на цыфровой.
Для общения администрацией форума выделена «Курилка».
Кроме того, на форуме приведен список литературы очень полезной для освоения программы и оптимизации работы с Вордом. На портале о Microsoft Office Word вы узнаете про: как начать нумеровать с 6.