передача значения переменной между несколькими подпрограммами - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть подпрограмма «Дни», в которой есть переменная «Дни».Я хочу передать значения из этой переменной Days в другую подпрограмму "GetDays"

Например:

Sub Day () Dim Days () как вариант Days = Array (1,3,5, 7,10,11) End Sub

Sub GetDay () 'Как мне получить значения Days здесь?End Sub

1 Ответ

1 голос
/ 09 февраля 2012

Не совсем уверен, что я понимаю, что вам нужно, но я думаю, вы хотите установить объект "DayClass", который будет содержать значения дней и возвращать их другим функциям, когда они необходимы:

(1) в редакторе VBA вставьте модуль CLASS

(2) в окне свойств этого модуля, измените имя на (скажем) DayClass (переопределяя имя по умолчанию "Class1".)

(3) поместите этот код в модуль DayClass:

Private mDays As Variant  ' member variable to hold the days array

' initialization method to populate the array
Private Sub Class_Initialize()
    mDays = Array(1, 3, 5, 7, 10, 11)
End Sub

' little function to return a particular value from the array
Public Property Get Day(i As Long)
    Day = mDays(i)
End Property

(4) Чтобы увидеть приведенный выше код в действии,вставьте обычный МОДУЛЬ и поместите в него эту маленькую функцию, которая может быть вызвана из строки формул (если хотите):

Public Function GetDays(i As Long)
    Dim DC As New DayClass  ' DC is dim'd of type DayClass
                            ' so via DC you can get at whatever is in there
    GetDays = DC.Day(i)     ' this function returns the i'th value of the 
                            ' array in DayClass, via DayClass's "Get Day" property              
End Function

(5) Так как «GetDays» является публичной функцией в обычном кодемодуль, вы можете проверить это, введя следующую формулу в любую ячейку электронной таблицы:

=GetDays(3)

cell result = 7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...