Que fait réellement le mot-clé Set dans VBA?

J’espère une question facile, mais j’aimerais bien une réponse technique à cela!

Quelle est la différence entre:

i = 4 

et

 Set i = 4 

en VBA? Je sais que ce dernier va lancer une erreur, mais je ne comprends pas bien pourquoi.

set est utilisé pour assigner une référence à un object. L’équivalent C serait

  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) 

Dans votre cas, cela produira une erreur. 🙂

Set assigne une référence d’object. Pour toutes les autres assignations, l’instruction (implicite, facultative et peu utilisée) est correcte:

 Set object = New SomeObject Set object = FunctionReturningAnObjectRef(SomeArgument) Let i = 0 Let i = FunctionReturningAValue(SomeArgument) ' or, more commonly ' i = 0 i = FunctionReturningAValue(SomeArgument) 

De MSDN :

Définir un mot clé: Dans VBA, le mot clé Définir est nécessaire pour distinguer l’atsortingbution d’un object et l’affectation de la propriété par défaut de l’object. Les propriétés par défaut n’étant pas sockets en charge dans Visual Basic .NET, le mot clé Set n’est pas nécessaire et n’est plus pris en charge.

Set est utilisé pour définir des références d’object, par opposition à l’atsortingbution d’une valeur.

Au sumt de ma tête, Set est utilisé pour affecter des objects COM aux variables. En faisant un ensemble, je suppose que sous le capot, il fait un appel à AddRef () sur l’object pour gérer sa durée de vie.

Donc, quand vous voulez définir une valeur, vous n’avez pas besoin de “Set”; sinon, si vous faites référence à un object, par exemple une feuille de travail / une plage, etc., vous devez utiliser “Set”.

Set est un mot-clé et il est utilisé pour atsortingbuer une référence à un object dans VBA.

Par exemple, * L’exemple ci-dessous montre comment utiliser Set dans VBA.

Dim WS comme feuille de travail

Définissez WS = ActiveWorkbook.Worksheets (“Sheet1”)

WS.Name = “Amit”