Excel VBA, l'obtention de gamme à partir d'une feuille inactive
Ce script fonctionne très bien lorsque je regarde le "Temp" de la feuille. Mais quand je suis dans une autre feuille, puis la commande de copie échoue.. Il donne un "définie par l'Application ou par l'objet défini erreur"
Sheets("Temp").Range(Cells(1), Cells(1).End(xlDown)).Copy
Sheets("Overview").Range("C40").PasteSpecial
Je peux utiliser ce script à la place, mais ensuite, j'ai des problèmes avec le collant
Sheets("Temp").Columns(1).Copy
Sheets("Overview").Range("C40").PasteSpecial
- Je ne veux pas activer le "Temp" de la feuille pour obtenir ce
Ce que je peux faire
- J'ai trouvé une solution qui fonctionne: Sheets("Temp").Range("A1:A1000").La copie , mais je ne l'aime pas. Je ne veux pas d'un script avec des limitations.
Vous devez vous connecter pour publier un commentaire.
Votre problème, c'est que la raison de la
Cell
références à l'intérieur de laRange
s 'sont non qualifiés, ils se réfèrent à un défaut de la feuille, ce qui peut ne pas être la feuille que vous avez l'intention.Pour les modules standard, le
ThisWorkbook
module, les classes personnalisées et de l'utilisateur forme de modules, les defeault est leActiveSheet
. PourWorksheet
code derrière les modules, c'est que la feuille de calcul.Pour les modules autres que la feuille de calcul de code derrière modules, votre code est en train de dire
Pour la feuille de calcul de code derrière modules, votre code est en train de dire
Dans les deux cas, la solution est la même: obtenir les références de plage avec le classeur:
J'ai rencontré un problème comme ça moi: j'ai essayé de chercher dans une feuille de calcul distincte pour voir si la couleur d'une cellule correspondait à la couleur d'une cellule dans une liste et retourne une chaîne de valeur: si vous êtes en utilisant .Cells(ligne, colonne), vous avez seulement besoin de ceci:
Sheets("sheetname").Cells(ligne, colonne)
pour faire référence à cette plage de cellules.
J'étais une boucle dans un bloc de 500 cellules et il fonctionne étonnamment vite pour moi.
Je n'ai pas essayé cela avec .Copie, mais je suppose qu'il fonctionne de la même manière.
Cela va faire, je n'aime pas utiliser (xlDown) dans le cas d'une cellule est vide.
Ou si vous voulez juste utiliser des Colonnes...