Quelle est la différence entre dim et mis en vba
Pardonnez-moi comme je suis un débutant en VBA.
Parfois j'utilise
Dim r as Range
r = Range("A1")
D'autres fois je utiliser
Set r = Range("A1")
Quelle est la différence? Et quand dois-je utiliser quoi?
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de raison d'utiliser
set
à moins que, se référant à un objet de référence. Il est recommandé de ne l'utiliser que dans ce contexte. Pour tous les autres types de données simples, il suffit d'utiliser l'opérateur d'affectation. C'est une bonne idée dedim
(dimension) TOUTES les variables cependant:Des exemples de types de données simples serait
integer
,long
,boolean
,string
. Ce sont juste des types de données et n'ont pas leurs propres méthodes et propriétés.Un exemple de
object
serait unRange
, unWorksheet
, ou unWorkbook
. Ceux-ci ont leurs propres méthodes et propriétés.Si vous essayez d'utiliser la dernière ligne sans
Set
, VB lèvera une erreur. Maintenant que vous avez uneobject
déclaré vous pouvez accéder à ses propriétés et méthodes.Set
sansDim
ing la variable en premier?Dim
déclare la variable.Set
configure la variable à un objet de référence.Cependant, je ne pense pas que ce est ce que vous êtes vraiment se poser.
Cela ne marchera jamais. Sans
Set
vous recevrez erreur d'exécution #91 variable Objet ou variable bloc with non définie. C'est parce que vous doit utilisationSet
pour affecter une variable la valeur d'un objet de référence. Ensuite, le code ci-dessus sera travail.Je pense que le code ci-dessous illustre ce que vous êtes vraiment demande. Supposons que nous n'avons pas déclarer un type et laissez
r
être unVariant
type à la place.Donc, examinons ce qui se passe ici.
r
est déclarée comme une Varianter
est définie à l'Range
contenant la cellule "A1"r
est définie à l' valeur de la par défaut de la propriété deRange("A1")
.Dans ce cas, la propriété par défaut d'un ensemble est
.Value
, de sorte que les deux lignes de code suivantes sont équivalentes.Pour en savoir plus sur par défaut des propriétés de l'objet, veuillez consulter Puce de Pearson "Membre par Défaut de la Classe".
Comme pour votre
Set
exemple:Ceci ne fonctionnerait pas sans déclarer d'abord que
r
est unRange
ouVariant
objet... à l'aide de laDim
de l'instruction, sauf si vous n'avez pasOption Explicit
activé, ce qui devrait. Toujours. Sinon, vous êtes à l'aide des identifiants que vous n'avez pas déclaré, et elles sont toutes déclarées implicitement que Variantes.Dim: vous êtes à la définition d'une variable (ici: r est une variable de type Range)
Jeu: vous êtes à la définition de la propriété (ici: définir la valeur de r pour Range("A1") - ce n'est pas un type, mais une valeur).
Vous devez utiliser ensemble avec des objets, si r sont de type simple (par exemple, int, string), alors il suffit d'écrire:
Dim r as Integer: r=5
ou un saut de ligne? Ne pensez pas que vous pouvez varier et de les assigner comme ça en VBA. - edit: Viens de remarquer que l'âge de ce post. Va laisser un commentaire ici car il est encore valide siDim
simplement déclare la valeur et le type.Set
assigne une valeur à la variable.Si une variable est définie comme un objet, par ex. Dim myfldr Comme Dossier, il est affecté d'une valeur à l'aide du mot-clé, "Set".
Dim
est court pour la Dimension et est utilisé dans VBA et VB6 pour déclarer les variables locales.Situé sur l'autre main, n'a rien à voir avec les déclarations de variables. Le
Set
mot-clé est utilisé pour attribuer une variable objet d'un nouvel objet.Espère que précise la différence pour vous.
Fonction à l'aide de VBA sur instruction SET il définit une référence à un objet.donc, si vous modifiez une propriété de l'objet réel sera également modifié.
l'autre Vars propriétés aussi des changements,donc:
actuellement tous les revendeurs à valeur ajoutée sont les mêmes!