161

うまくいけば簡単な質問ですが、これに対する技術的な回答が欲しいです!

次の違いは何ですか:

i = 4

Set i = 4

VBAで?後者がエラーをスローすることは知っていますが、その理由は完全にはわかりません。

4

7 に答える 7

102

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)
于 2008-12-08T14:00:24.203 に答える
81

あなたの場合、エラーが発生します。:-)

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)
于 2008-12-08T13:57:56.783 に答える
47

MSDNから:

Set キーワード: VBA では、オブジェクトの割り当てとオブジェクトの既定のプロパティの割り当てを区別するために Set キーワードが必要です。Visual Basic .NET では既定のプロパティがサポートされていないため、Set キーワードは不要になり、サポートされなくなりました。

于 2008-12-08T13:58:45.707 に答える
10

Set は、値を割り当てるのではなく、オブジェクト参照を設定するために使用されます。

于 2008-12-08T13:57:41.527 に答える
1

私の頭の上では、Set は COM オブジェクトを変数に割り当てるために使用されます。Set を実行することで、オブジェクトのライフタイムを管理するために、内部で AddRef() 呼び出しを実行していると思われます。

于 2008-12-08T13:59:49.260 に答える
0

したがって、値を設定する場合は、「設定」は必要ありません。それ以外の場合、ワークシート/範囲などのオブジェクトを参照する場合は、"Set" を使用する必要があります。

于 2014-09-05T07:37:42.890 に答える
-1

セットはキーワードであり、VBA でオブジェクトへの参照を割り当てるために使用されます。

たとえば、*以下の例は、VBA で Set を使用する方法を示しています。

Dim WS As ワークシート

WS = ActiveWorkbook.Worksheets("Sheet1") を設定します。

WS.Name = "アミット"

于 2013-11-11T05:05:59.870 に答える