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

次に、通常のモジュール sub で変数を定義しました。

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

実際には、サブ 1 で計算された値を別のサブで使用したいという考えです。クラスモジュールから値を取得するにはどうすればよいですか、またはより良い方法があります。call sub(value) を使用したくありません。

事前に助けてくれてありがとう!

アミール

4

2 に答える 2

2

makeArray()以内にお電話くださいtest()makeArray()関数として使用しませんか?関数はオブジェクト/値を返すことができるためです。あなたのケースでは関数を使用することを強くお勧めします。

次のことを試してください。

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

sのみを使用する場合sub:

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 に答える