我创建了名为'class1'的类:
Private ka As Variant
Private ra As Variant
Public Property Get kolom() As Variant
kolom = ka
End Property
Public Property Get rij() As Variant
rij = ra
End Property
Public Property Let kolom(value As Variant)
ka = value
End Property
Public Property Let rij(value As Variant)
ra = value
End Property
然后在正常的模块子中我定义了变量:
Public Sub MakeArray(OutputSheet As Variant)
Dim igeg As Class1
Set igeg = New Class1
igeg.kolom = 47
igeg.rij = 559
End Sub
现在在一个新的子目录中我想得到值47和559,但我无法弄清楚如何做到这一点。我尝试了以下但是ik没有给出任何价值:
sub test()
Dim igeg As Class1
newkolom = igeg.kolom
Msgbox igeg.kolom
End sub
或尝试以下结果而没有结果:
Public Function Test1() As Class1
Set Test1 = New Class1
End Function
Public Sub test()
Dim newigeg As Class1
Set newigeg = Test1
Msgbox igeg.kolom
End sub
实际上我的想法是我想在另一个sub中使用sub 1中计算的值。我怎样才能从类模块中获取价值,或者有更好的方法。不想使用call sub(value)。
提前感谢您的帮助!
阿米尔
答案 0 :(得分:2)
您在makeArray()
内致电test()
。为什么不使用makeArray()
作为函数?因为Function可以返回一个对象/值。建议在你的情况下使用一个函数。
尝试以下方法:
Public Function MakeArray(ByRef OutputSheet As Variant) as Class1
Dim igeg As Class1
Set igeg = New Class1
igeg.kolom = 47
igeg.rij = 559
set MakeArray = igeg
End Function
sub test()
Dim igeg As Class1
set igeg = MakeArray(myvar)
Msgbox igeg.kolom
End sub
如果仅使用sub
s:
Public Sub MakeArray(ByRef OutputSheet As Variant, ByRef igeg As Class1)
igeg.kolom = 47
igeg.rij = 559
End Sub
Sub test()
Dim myvar As Variant
Dim igeg As Class1
Set igeg = New Class1
Call MakeArray(myvar, igeg)
MsgBox igeg.kolom
End Sub
答案 1 :(得分:0)
您必须使类的实例成为全局或使类静态。下面为类设置变量,但是你在方法中实例化了类,因此当方法完成时它不在范围之内。
Public Sub MakeArray(OutputSheet As Variant)
Dim igeg As Class1
Set igeg = New Class1
igeg.kolom = 47
igeg.rij = 559
End Sub