web-dev-qa-db-fra.com

Déclarer une variable de feuille de travail active dans VBA

J'essaie de garder une variable dans la feuille de calcul actuellement ouverte dans VBA. Jusqu'ici j'ai 

 Dim Active As Worksheet
 Set Active = ActiveWorksheet 

Pour une raison quelconque, cela me donne une erreur dans la dernière ligne, en disant Object required. Mon code ouvre une nouvelle feuille de calcul avec les données de la feuille active. Il me faut donc une variable pour tenir ma place dans la feuille de calcul actuellement active. Une idée pourquoi cela ne fonctionne pas correctement? Merci d'avance!

4
unikitty94

Vous devez utiliser ActiveSheet au lieu de ActiveWorksheet

11
Sobigen

Je préfère ne pas utiliser ActiveSheet dans VBA, car si vous commencez à écrire un code utilisant plusieurs feuilles de calcul, vous risquez de ne pas être sûr de la pertinence lorsque vous tentez de déterminer lequel est lequel. Je préfère le suivant

dim ws as Worksheet

ws = Thisworkbook.Worksheets(1)

OR

ws = Thisworkbook.Worksheets("worksheet name")

La seule fois où j'utilise Activesheet maintenant, c'est quand j'ai besoin de code pour travailler sur n'importe quelle feuille de calcul, quel que soit son contenu, ce qui est très rare. Dans ce cas, comme indiqué ci-dessus, utilisez:

dim ws as Worksheet

ws = Thisworkbook.Activesheet

OR

ws = Activesheet
4
iShaymus

Pour moi, j'aime bien parler directement de la feuille de travail à laquelle je veux m'adresser en utilisant Feuille ("Feuille de travail").

Donc, si vous voulez prendre une information sur une feuille particulière, vous pouvez utiliser ceci:

Dim ExampleWorksheet as Worksheet
Dim Example as Integer

Example = Sheets("ExampleWorksheet").Cells(x,y)

Ainsi, vous vous débarrassez des problèmes avec des feuilles de calcul actives ou non actives.

0
Lutscha