VBA ActiveWorkbook vs ThisWorkbook

Ce didacticiel discutera de la différence entre VBA ActiveWorkbook et ThisWorkbook.

ActiveWorkbook vs ThisWorkbook

Il est important de connaître la différence entre ActiveWorkbook et ThisWorkbook en VBA :

L'ActiveWorkbook est le classeur actuellement actif (de la même manière qu'ActiveSheet est la feuille actuellement active). ThisWorkbook est le classeur dans lequel le code VBA est stocké. Ce classeur ne changera jamais.

Ce classeur

Considérez ThisWorkbook comme une variable objet qui vous permet de référencer le classeur contenant le code en cours d'exécution.

Ce code affichera une MessageBox avec le nom ThisWorkbook :

123 Sous Show_ThisWorkbook()MsgBox ThisWorkbook.NameFin du sous-marin

Cahier de travail actif

L'ActiveWorkbook est une variable objet qui vous permet de référencer le classeur actuellement actif.

Ce code affichera une MessageBox avec le nom ActiveWorkbook :

123 Sous Show_ActiveWorkbook()MsgBox ActiveWorkbook.NameFin du sous-marin

VBA suppose ActiveWorkbook

Lorsque vous essayez de travailler avec des objets (par exemple Sheets) dans ActiveWorkbook, vous n'avez pas besoin d'indiquer explicitement l'objet ActiveWorkbook. VBA supposera que vous faites référence à ActiveWorkbook.

Donc ça:

1 ActiveWorkbook.Sheets("Sheet1").Range("$A$5").Valeur = 1

C'est la même chose que ça :

1 Sheets("Sheet1").Plage("$A$5").Valeur = 1

Les classeurs nouveaux ou ouverts sont actifs

Chaque fois que vous créez un nouveau classeur ou ouvrez un classeur, le classeur devient « Actif ». Vous pouvez voir par vous-même avec ce code qui ajoutera un classeur et récupérera le nom du nouveau classeur :

1234 Sous Show_ActiveWorkbook_Add()Classeurs.AjouterMsgBox ActiveWorkbook.NameFin du sous-marin

Après avoir ajouté ou ouvert un classeur, vous pouvez l'affecter à une variable à l'aide de l'objet ActiveWorkbook. Nous allons vous montrer comment dans les exemples ci-dessous :

Exemples de ThisWorkbook et ActiveWorkbook

Changer de classeur actif

Basculez le classeur actif à l'aide du nom du classeur :

1 Classeurs("Livre1").Activer

Basculez le classeur actif à l'aide du numéro de commande de la feuille de calcul (1 est la première feuille de calcul d'un classeur)

1 Classeurs(1).Activer

Activer ce classeur

Faites de ThisWorkbook (où le code en cours d'exécution est stocké) le ActiveWorkbook :

1 Ce classeur.Activer

Définir ActiveWorkbook sur une variable

Attribuez l'ActiveWorkbook à une variable d'objet de classeur :

12 Dim wb comme classeurDéfinir wb = ActiveWorkbook

Fermer et enregistrer le classeur actif

Ferme et enregistre le classeur actif :

1 ActiveWorkbook.Close SaveChanges:=True

Fermer le classeur actif sans enregistrer

Ferme l'ActiveWorkbook sans enregistrer :

1 ActiveWorkbook.Close SaveChanges:=False

ActiveWorkbook - Enregistrer sous

Effectue un enregistrement sous du classeur actif.

123456789 Sub SaveAsActiveWorkbook()Résultat faible En tant que varianteresult = Application.GetSaveAsFilename(InitialFileName:="", _FileFilter:="Classeur Excel prenant en charge les macros (*.xlsm), *.xlsm, Classeur Excel (*.xlsx), *.xlsx")Si résultat = Faux Alors RetourRésultat ActiveWorkbook.SaveAsFin du sous-marin

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave