2012-10-02 2 views
5
Set mainWB = Workbooks("Copy Paste.xlsb") 
Set mainWS = mainWB.Sheets("Sheet1") 
Set testWS = mainWB.Sheets("Sheet3") 

mainWS.Select 

Je continue à obtenir une erreur sur la dernière ligne dans Excel VBA:La méthode Sélectionner l'objet '_Worksheet' a échoué - pourquoi?

« Méthode Sélectionnez l'objet « _Worksheet » a échoué »

Toute idée pourquoi ou comment résoudre ce problème? Je vous remercie!

+0

Vos feuilles effectivement nommés sheet1/Feuil3? Le classeur est-il nommé de la même manière? – enderland

+1

Est-ce que 'mainWB' est actif? –

+2

Et donc '.Select' devrait être évité :) Voir ce lien http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select –

Répondre

6

Comme indiqué dans les commentaires, ne peut pas sélectionner Sheets dans VBA qui ne sont pas actifs (ou Range sur eux).

Par exemple le code suivant

Sheets(1).Activate 
Sheets(2).Range("A1").Select 

provoque l'erreur que vous recevez.

Dans votre cas, il semble que vous essayez de Select une feuille qui n'est pas actif - votre objet mainWS est sans doute pas le ActiveSheet au point que vous appelez ce code. Un moyen facile de tester si cela se produit est si vous ajoutez ce qui suit à la fin de votre code:

if (ActiveSheet.Name <> mainWS.Name) then 
    msgbox ("Going to crash after clicking ok!") 
end if 
mainWS.Select 

Notez que vous pouvez vous référer à la feuille de calcul activée avec la commande ActiveSheet soit obtenir des propriétés ou quelles que soient les autres opérations vous êtes intéressé à faire.

Cette erreur peut également se produire si vous travaillez en boucle sur toutes les feuilles de calcul du classeur et que des feuilles masquées sont présentes. Lookout pour ça.


dernier, et sans rapport avec votre message d'erreur spécifique, je suppose que vous déclarez ces variables quelque part et n'a tout simplement pas les copier ici - sinon j'envisager d'utiliser Option Explicit comme vous pouvez souvent courir dans toutes sortes de problèmes sans avoir Option Explicit en haut de votre code VBA.

+0

Excellente réponse. Félicitations pour les connaissances et la présentation. – NoChance

+0

@NoChance merci pour les gentils mots. – enderland

1

Bien que je suis d'accord avec ce qui précède, il est également important de noter que la fonction de suppression ne fonctionnera pas si la visibilité de la feuille de calcul est actuellement fixé à xlSheetVeryHidden

Questions connexes