1

我已经创建了名为“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 中计算的值。我如何从类模块中获取价值或有更好的方法。不想使用调用 sub(value)。

提前谢谢你的帮助!

阿米尔

4

2 回答 2

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

如果只使用subs 那么:

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
于 2012-12-24T18:58:23.020 回答
0

您必须使类的实例成为全局的或使类成为静态的。下面为类设置变量,但在方法中实例化类,因此当方法完成时它超出范围。

Public Sub MakeArray(OutputSheet As Variant)
Dim igeg As Class1
Set igeg = New Class1
igeg.kolom = 47
igeg.rij = 559
End Sub
于 2012-12-24T18:58:02.790 回答