回答:
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)
VBA on the left | C on the right
): Dim A, B As Range | Range A, B;
。あなたの類推で行くと、A = B | A = B;
正しいでしょう(そしてそれはCであるでしょう)が、Set A = B | A = &B;
実際にはVBAで正しいです(そしてそれはCで失敗します)。VBAではA = B
、Set A = B
Cと同等A = B;
です。区別はどこかで発生します。
あなたの場合、それはエラーを生成します。:-)
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キーワードは不要であり、サポートされなくなりました。
Object variable or With block variable not set
、VBAからのエラーでここに到着した人には役に立ちません:)