Страница: 1 |
Страница: 1 |
Вопрос: передача данных между процедурами
Добавлено: 30.01.08 18:10
Автор вопроса: APS | ICQ: 234458121
Что-то никак не могу допетрить как это делается, хотя помню, что сам делал.
Есть процедура:
RowNumbers
...
End Sub
из который сделан вызов процедуры RowNumbers:
Dim MyArr() As Long
With Worksheets("Total").UsedRange
endpoint = .Cells(.Rows.Count, .Columns.Count).Row
End With
For i = 3 To endpoint
r = Worksheets("Total").Rows(i).Hidden
If r = False Then
n = n + 1
ReDim Preserve MyArr(n) As Long
MyArr(n) = i
End If
Next
End Sub
Так вот вопрос, как мне использовать данные массива MyArr() в вызывающей процедуре SendEmail?
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Fatty
Вопросов: 0
Ответов: 55
Профиль | | #1
Добавлено: 30.01.08 20:52
Убери объявление массива из процедуры RowNumbers
и поставь сразу после Option Explicit
Public MyArr() As Long
(одна из версий)
~'J'~
Номер ответа: 2
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #2
Добавлено: 30.01.08 23:09
Можно возвратить 2 вариантами:
1)
Function RowNumbers() as Variant
...
RowNumbers = MyArr
End Function
2)
Ссылкой
Sub SendEmail (byRef ReturnArr() as Long)
...
'работаем с ReturnArr вместо твоего MyArr
End Sub
Dim MyArr() as Long
Call SendEmail (MyArr)
Второй вариант лучше.
Номер ответа: 3
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #3
Добавлено: 31.01.08 11:40
Нечего и добавить.. Да!
Номер ответа: 4
Автор ответа:
APS
ICQ: 234458121
Вопросов: 38
Ответов: 107
Профиль | | #4
Добавлено: 31.01.08 23:05
to HACKER
второй вариант напиши поподробнее - я что-то его совсем не догнал: мне нужно из SendEmail вызвать процедуру и получить из нее данные, а ты предлагаешь наоборот... или рекурсив? но что из этого получится? сорри, времени поэкспериментировать пока нет...
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 01.02.08 02:04
блин.. ну если у тебя нет времени на собственный вопрос, то причем тут я?
ReDim return_arr(2)
return_arr(0) = 1
return_arr(1) = 10
return_arr(2) = 100
End sub
private sub Form_load ()
Dim myarr() as long
call lalala (myarr) 'Заполняем массив в функции
Msgbox Join(myarr,vbcrlf) 'Выводим весь массив
end sub