Pardonnez-moi car je suis un débutant dans VBA.
Parfois j'utilise
Dim r as Range
r = Range("A1")
D'autres fois que j'utilise
Set r = Range("A1")
Quelle est la différence? Et quand devrais-je utiliser quoi?
Il n'y a aucune raison d'utiliser set
à moins de faire référence à une référence d'objet. C'est une bonne pratique de ne l'utiliser que dans ce contexte. Pour tous les autres types de données simples, utilisez simplement un opérateur d’affectation. Cependant, il est judicieux de dim
(dimension) TOUTES les variables:
Des exemples de types de données simples seraient integer
, long
, boolean
, string
. Ce ne sont que des types de données et n'ont pas leurs propres méthodes et propriétés.
Dim i as Integer
i = 5
Dim myWord as String
myWord = "Whatever I want"
Un exemple de object
serait une Range
, une Worksheet
ou une Workbook
. Ceux-ci ont leurs propres méthodes et propriétés.
Dim myRange as Range
Set myRange = Sheet1.Range("A1")
Si vous essayez d'utiliser la dernière ligne sans Set
, VB émettra une erreur. Maintenant que vous avez déclaré une object
, vous pouvez accéder à ses propriétés et méthodes.
myString = myRange.Value
Dim: vous définissez une variable (ici: r est une variable de type Range)
Set: vous définissez la propriété (ici: définissez la valeur de r sur Range ("A1") - ce n'est pas un type, mais une valeur).
Vous devez utiliser set avec des objets. Si r était un type simple (par exemple, int, chaîne de caractères), il vous suffirait d'écrire:
Dim r As Integer
r=5
Dim
déclare simplement la valeur et le type.
Set
attribue une valeur à la variable.
Si une variable est définie en tant qu’objet, par ex. Dim myfldr As Folder, une valeur est affectée à l’aide du mot clé "Set".
Dim
est l'abréviation de Dimension et est utilisé dans VBA et VB6 pour déclarer des variables locales.
Défini par contre, n'a rien à voir avec les déclarations de variables. Le mot clé Set
est utilisé pour affecter une variable d'objet à un nouvel objet.
J'espère que cela clarifie la différence pour vous.
Selon l'aide de VBA sur l'instruction SET, il définit une référence à un objet. Ainsi, si vous modifiez une propriété, l'objet réel change également.
Dim newObj as Object
Set var1=Object1(same type as Object)
Set var2=Object1(same type as Object)
Set var3=Object1(same type as Object)
Set var4=Object1(same type as Object)
Var1.property1=NewPropertyValue
les autres propriétés de Vars changent aussi, donc:
Var1.property1=Var2.property1=Var3.property1=Var4.property1=Object1.Property1=NewpropertyValue`
en fait, tous les vars sont les mêmes!