web-dev-qa-db-fra.com

Quelle est la différence entre Sheets.Select et Sheets.Activate?

Dans VBA pour Excel, quelle est la différence entreSheets.SelectetSheets.Activate?

12

La différence réside dans leur flexibilité.

Activate transforme la feuille spécifiée en feuille active et ne peut l'appliquer qu'à une seule feuille

Select permet éventuellement d’étendre les feuilles actuellement sélectionnées pour inclure la feuille spécifiée, par exemple

Worksheets("Sheet2").Select Replace:=False

et permettent également de sélectionner un tableau de feuilles

Sheets(Array("Sheet3", "Sheet2")).Select

Dans leur forme minimale, Select et Activate font la même chose.

Par exemple, si une seule feuille est actuellement sélectionnée (par exemple, Sheet3) ou si plusieurs feuilles sont sélectionnées mais que en excluant, par exemple, Sheet2, Worksheets("Sheet2").Select et Worksheets("Sheet2").Activate font tous deux de Sheet2 la seule feuille sélectionnée et active.

Par contre, si on dit que Sheet2 et Sheet3 sont sélectionnés et que Sheet2 est la feuille active, alors Worksheets("Sheet3").Activate laisse les deux feuilles sélectionnées et fait de Sheet3 la feuille active, alors que Worksheets("Sheet2").Select fait de Sheet3 la feuille sélectionnée et active.

24
chris neilsen

.activate est-ce que vous cliquez sur l'onglet de la feuille de travail.

.select vous simule de faire un contrôle et cliquez sur l'onglet. En VBA, vous n'êtes pas encore dans la feuille.

Vous pouvez .select plus d'une feuille, mais .activate un seul.

14
glh

Pour développer ce qui précède: Lorsque le code ci-dessous est exécuté avec Replace: = False, aucun événement de désactivation de feuille de calcul ne se produit sur sheet4. Si Remplacer: = Vrai est utilisé à la place, l'événement de désactivation sera déclenché.

Prévenir l'événement est souhaitable dans la plupart des cas, car il peut provoquer un comportement inattendu.

Cela signifie que select correspond uniquement à CTRL + Un clic sur un onglet de la feuille de calcul SI replace: = false est utilisé.

sous a

Dim rng As Range

Sheet4.Select Replace:=False
Set rng = Selection

Sheet5.Select Replace:=True
Selection = rng.Value

fin sous

Merci pour vos messages car cela m'a aidé à comprendre la différence.

Harvey

0
HarveyFrench