うまくいけば簡単な質問ですが、これに対する技術的な回答が欲しいです!
次の違いは何ですか:
i = 4
と
Set i = 4
VBAで?後者がエラーをスローすることは知っていますが、その理由は完全にはわかりません。
うまくいけば簡単な質問ですが、これに対する技術的な回答が欲しいです!
次の違いは何ですか:
i = 4
と
Set i = 4
VBAで?後者がエラーをスローすることは知っていますが、その理由は完全にはわかりません。
set
オブジェクトへの参照を割り当てるために使用されます。C に相当するものは次のようになります。
int i;
int* ref_i;
i = 4; // Assigning a value (in VBA: i = 4)
ref_i = &i; //assigning a reference (in VBA: set ref_i = i)
あなたの場合、エラーが発生します。:-)
Set
オブジェクト参照を割り当てます。他のすべての割り当てについては、(暗黙的、オプション、およびほとんど使用されない)Let
ステートメントは正しいです。
Set object = New SomeObject
Set object = FunctionReturningAnObjectRef(SomeArgument)
Let i = 0
Let i = FunctionReturningAValue(SomeArgument)
' or, more commonly '
i = 0
i = FunctionReturningAValue(SomeArgument)
MSDNから:
Set キーワード: VBA では、オブジェクトの割り当てとオブジェクトの既定のプロパティの割り当てを区別するために Set キーワードが必要です。Visual Basic .NET では既定のプロパティがサポートされていないため、Set キーワードは不要になり、サポートされなくなりました。
Set は、値を割り当てるのではなく、オブジェクト参照を設定するために使用されます。
私の頭の上では、Set は COM オブジェクトを変数に割り当てるために使用されます。Set を実行することで、オブジェクトのライフタイムを管理するために、内部で AddRef() 呼び出しを実行していると思われます。
したがって、値を設定する場合は、「設定」は必要ありません。それ以外の場合、ワークシート/範囲などのオブジェクトを参照する場合は、"Set" を使用する必要があります。
セットはキーワードであり、VBA でオブジェクトへの参照を割り当てるために使用されます。
たとえば、*以下の例は、VBA で Set を使用する方法を示しています。
Dim WS As ワークシート
WS = ActiveWorkbook.Worksheets("Sheet1") を設定します。
WS.Name = "アミット"