Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: передача данных между процедурами Добавлено: 30.01.08 18:10  

Автор вопроса:  APS | ICQ: 234458121 
Что-то никак не могу допетрить как это делается, хотя помню, что сам делал.
Есть процедура:
Sub SendEmail()

    RowNumbers

    ...

End Sub

из который сделан вызов процедуры RowNumbers:
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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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
блин.. ну если у тебя нет времени на собственный вопрос, то причем тут я? :)

Public Sub lalala (byref return_arr() as Long)
 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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам