Excel.Application.Les cellules.SpecialCells(xlCellTypeLastCell) de retour en bas de la feuille de calcul, n'est pas la dernière cellule de données
Je suis en train d'écrire une méthode en VBA dans Excel 2013 à boucle à travers les lignes de deux feuilles de calcul et de comparer le texte dans une colonne de chaque. Cependant, quand je suis en boucle, je trouve que le code est une boucle dans la feuille de calcul entière, et pas seulement les lignes avec des données. Excel.Sheets("Feuil1").Les cellules.SpecialCells(xlCellTypeLastCell) renvoie une cellule dans la colonne appropriée, mais la ligne est la dernière ligne de la feuille (1048576), plutôt que la dernière ligne avec des données (1951). J'ai écrit un chèque de cellules vides dans le code (puisque je ne peux pas être sûr que chaque ligne est utilisé), de sorte qu'il ne cause pas un problème, cela signifie simplement que chaque fois qu'il s'exécute, il faut beaucoup plus qu'il ne le devrait. Et comme cette méthode est appelée à partir de l'intérieur de Worksheet_Change, il ralentit les choses.
Généralement, lors de la "dernière" de la cellule qui est rapporté à tort, j'avais trouvé qu'un enregistrer généralement fixe, et si cela ne fonctionne pas, puis de supprimer les lignes (et pas seulement le contenu, mais l'ensemble de lignes) de la mis-communiqué de la cellule de retour à la dernière cellule et puis fonctionne l'enregistrement. Cependant, dans ce cas, il n'est pas aider.
J'ai regardé à travers Google sans succès. J'aimerais ne pas avoir à copier toutes les données et le code de ce classeur et en un nouveau si je peux l'aider. Quelqu'un a des suggestions?
- Trouver la dernière ligne est une pierre angulaire de la programmation VBA. Voici, ce que je considère au moins, de façon définitive l'écriture-up sur la recherche de la dernière ligne: stackoverflow.com/questions/11169445/...
- Merci pour l'info; voir mon commentaire sur Christophe réponse ci-dessous. Aussi, une idée de pourquoi c'était downvoted? Ce n'est pas un doublon de cette question; ma question est de savoir comment fixer xlCellTypeLastCell, pas comment le faire avec une solution de contournement? Et si c'est downvoted, pourquoi ne pas ceci qui a posé la même question, avec une "magie fixe lui-même, je vais poster en arrière si cela se produit à nouveau" résolution?
Vous devez vous connecter pour publier un commentaire.
(Trop d'infos pour utiliser un commentaire ici.)
VBA mastermind Ron de Bruin a écrit un peu emballé sur le pourquoi de
xlCellTypeLastCell
ainsi queUsedRange
peut-être à défaut ici: http://www.rondebruin.nl/win/s9/win005.htm.(Dans le post j'ai fait un lien dans mon commentaire initial, Erreur dans la recherche de la dernière utilisation de la cellule en VBA, les pièges de la
UsedRange
sont décrits de la même manière.)Voici la citation directe:
Pour faire une longue histoire courte, la logique pour trouver la dernière ligne sur une feuille appartient à l'intérieur d'une fonction globale. Vous allez utiliser cette fonction tout le temps. Voici un exemple pour la recherche de la dernière ligne sur une feuille:
Autant que le downvote va -- aucune idée. En fait, j'ai jamais downvoted ici haha.
xlCellTypeLastCell
encore être considéré comme cassé? Si oui, est-MS considère que c'est un bug?Essayez d'utiliser le code suivant pour déterminer la dernière ligne & colonne au lieu
Vous pouvez essayer ceci: