J'espère qu'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 lancera une erreur, mais je ne comprends pas tout à fait pourquoi.
J'espère qu'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 lancera une erreur, mais je ne comprends pas tout à fait pourquoi.
Réponses:
set
est utilisé pour attribuer une référence à un objet. 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)
VBA on the left | C on the right
): Dim A, B As Range | Range A, B;
. Aller avec votre analogie, A = B | A = B;
serait correct (et ce serait en C), mais Set A = B | A = &B;
est en fait correct en VBA (et cela échouerait en C). En VBA, A = B
et Set A = B
sont tous les deux équivalents à C A = B;
! La distinction se produit ailleurs.
Dans votre cas, cela produira une erreur. :-)
Set
affecte une référence d'objet. Pour toutes les autres affectations, l' Let
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)
Depuis MSDN :
Mot-clé Set: Dans VBA, le mot-clé Set est nécessaire pour faire la distinction entre l'affectation d'un objet et l'affectation de la propriété par défaut de l'objet. Étant donné que les propriétés par défaut ne sont pas prises en charge dans Visual Basic .NET, le mot clé Set n'est pas nécessaire et n'est plus pris en charge.
Object variable or With block variable not set
erreur de VBA :)
Du haut de ma tête, Set est utilisé pour affecter des objets COM à des variables. En faisant un Set, je soupçonne que sous le capot, il fait un appel AddRef () sur l'objet pour gérer sa durée de vie.
Set est un mot-clé et il est utilisé pour attribuer une référence à un objet dans VBA.
Par exemple, * L'exemple ci-dessous montre comment utiliser Set dans VBA.
Dim WS comme feuille de calcul
Définir WS = ActiveWorkbook.Worksheets ("Sheet1")
WS.Name = "Amit"