Excel vba - xlDown
Le code ci-dessous est d'essayer de coller la plage sélectionnée (passé en rng
) à la fin de la feuille de calcul.
Il fonctionne si il y a déjà 2 lignes déjà présentes(A1, A2).
Sub copyRow(rng As Range, ws As Worksheet)
Dim newRange As Range
Set newRange = ws.Range("A1").End(xlDown).Offset(1, 0)
rng.Copy
newRange.PasteSpecial (xlPasteAll)
End Sub
Donc, si A1 et A2 sont présents et si vous appelez cette méthode 100 fois, il insère 100 lignes après. Mais, si aucune ligne n'présents ou A1 seulement, il vient de remplacer A2. J'ai pu voir excel écrire sur la même ligne (écraser)
Semble que quelque chose à voir avec la façon dont xlDown calcule si il y a moins de 2 lignes, pas sûr.
Toute aide serait appréciée.
OriginalL'auteur bsr | 2012-02-22
Vous devez vous connecter pour publier un commentaire.
Désolé, mais je ne suis pas d'accord avec Michael réponse.
End(xlDown) est le VBA équivalent de cliquer sur
Ctrl
+Down
.Essayer
Ctrl
+Down
avecCela vous donnera une idée de l'ensemble des lignes différentes,
Ctrl
+Down
pourrait vous prendre pour.Set newRange = ws.Range("A1").End(xlDown).End(xlDown).End(xlUp).Offset(1, 0)
ne fait pas nécessairement de vous prendre à la dernière ligne de plus de 1.Je suis surpris
Set newRange = ws.Range("A1").End(xlDown).Offset(1, 0)
travaillé avec une colonne vide.Range("A1").End(xlDown)
- vous à la ligne du bas de la feuille puis.Offset(1, 0)
voudrais essayer de vous prendre la feuille.Considérer:
Je suppose que vous n'avez pas de valeurs dans le borrom lignes. Si vous n'avez pas de soins si la ligne 1 est laissée en blanc avec une colonne vide, puis:
devrait donner le résultat désiré, quel que soit le contenu actuel de la feuille de ws.
Si vous ne vous souciez de la ligne 1 laissées vides, d'expérimenter avec les
Ctrl
+Down
etCtrl
+Up
vous donnera une compréhension de l'effet de différentes combinaisons de valeurs.Tony, merci pour ur de l'aide. Il a travaillé pour moi. Sur la première partie, pourquoi j'ai fait ça, j'ai été la suite de l'article 18 support.microsoft.com/kb/291308 . Surpris de voir pas de moyen facile de le faire. merci aga.
Je vais regarder votre lien, mais il semble que la pensée, il est donner de mauvais conseils. Il y a, à ma connaissance, aucune méthode fiable d'identification de la dernière ligne ou colonne d'une plage. Je suis d'accord avec brettdj,
Find
est une des méthodes plus fiables, mais il a aussi ses problèmes.SpecialCells
est une autre bonne méthode, je veux dire il n'a pas manqué de moi. J'ai essayé de la liste de toutes les manièresEnd(xlUp)
ne peut pas vous donner le résultat que vous attendez. J'espère avoir été clair que vous devez tester ces conditions aux limites.notez que la Fin ignore cachés ou filtrés par des lignes ou des colonnes
Comme je l'ai dit plus tôt, pas de méthode de recherche de la dernière rangée/colonne fonctionne dans toutes les situations. Je n'avais pas pensé sur les lignes, mais cela ne m'étonne pas qu'ils causent des problèmes. L'approche choisie doit être testé avec l'objectif de la feuille de calcul pour s'assurer qu'il fonctionne comme prévu.
OriginalL'auteur Tony Dallimore