0

vb.net でクラス変数を渡す方法があることは知っています。

モジュール Module1

Sub Main()

    ' Declare an instance of the class and assign a value to its field. 
    ***Dim c1 As Class1 = New Class1()***
    c1.Field = 5
    Console.WriteLine(c1.Field)
    ' Output: 5 

    ' ByVal does not prevent changing the value of a field or property.
    ChangeFieldValue(***c1***)
    Console.WriteLine(***c1.Field***)
    ' Output: 500 

    ' ByVal does prevent changing the value of c1 itself. 
    ChangeClassReference(c1)
    Console.WriteLine(c1.Field)
    ' Output: 500

    Console.ReadKey()
End Sub 

Public Sub ChangeFieldValue(***ByVal cls As Class1***)
    cls.Field = 500
End Sub 

Public Sub ChangeClassReference(***ByVal cls As Class1***)
    cls = New Class1()
    cls.Field = 1000
End Sub 

Public Class Class1
    Public Field As Integer 
End Class 

エンドモジュール

ただし、vba で同じ手順をエミュレートしようとすると、機能しません。vba(Excel用)で行うことは可能ですか?

4

1 に答える 1

0

以下を試してください。

Sub Main()

    Dim c1 As New Class1
    c1.Field = 5
    Debug.Print c1.Field

    changeFieldValue c1
    Debug.Print c1.Field

    changeClassReference c1
    Debug.Print c1.Field

End Sub

Public Sub changeClassReference(cls As Class1)

    Set cls = New Class1
    cls.Field = 1000

End Sub

Public Sub changeFieldValue(cls As Class1)

    cls.Field = 500

End Sub

次のコードを使用して、新しいクラス モジュールを追加する必要があります。

Public Field As Long
于 2013-01-23T00:46:42.533 に答える