在多个子例程之间传递变量值

时间:2012-02-08 23:51:22

标签: excel-vba vba excel

我有一个子程序“Days”,它有一个变量Days。我想将Days变量的值传递给不同的子例程“GetDays”

例如:

子日() Dim Days()作为变体 天=数组(1,3,5,7,10,11) 结束子

Sub GetDay() '我如何在这里获得Days的价值? 结束子

1 个答案:

答案 0 :(得分:1)

我不完全确定我理解你所追求的是什么,但我最好的猜测是你要设置一个“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)要查看上面的代码,请插入一个常规MODULE并将此小函数放入其中,可以从公式栏中调用(如果需要):

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