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.
vba
variable-assignment
Jon Artus
la source
la source
Réponses:
set
est utilisé pour attribuer une référence à un objet. L'équivalent C seraitla source
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), maisSet A = B | A = &B;
est en fait correct en VBA (et cela échouerait en C). En VBA,A = B
etSet A = B
sont tous les deux équivalents à CA = 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:la source
Depuis MSDN :
la source
Object variable or With block variable not set
erreur de VBA :)Set est utilisé pour définir des références d'objet, par opposition à l'attribution d'une valeur.
la source
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.
la source
Ainsi, lorsque vous souhaitez définir une valeur, vous n'avez pas besoin de "Set"; sinon, si vous faites référence à un objet, par exemple une feuille de calcul / une plage, etc., vous devez utiliser "Set".
la source
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"
la source